私は今、以下のようにここで教えていただいたプログラムを参考に組んでは見たものの、同じ行をいくつもコピペすると計算されなくなってしまいます。1行だけの計算でしようとするとうまく計算されるのですが・・・
<HTML>
<HEAD>
<TITLE>
タイトルバーに表示されるテキスト
</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--JavaScript
function SUM(){
if(!isNaN(document.sum.text1.value) && !isNaN(document.sum.text2.value) && !isNaN(document.sum.text3.value) && document.sum.text1.value && document.sum.text2.value && document.sum.text3.value){
document.sum.text4.value = eval(document.sum.text1.value) + eval(document.sum.text2.value) - eval(document.sum.text3.value)
}
if( !isNaN(document.sum.text5.value) && !isNaN(document.sum.text6.value) && document.sum.text5.value && document.sum.text6.value){
document.sum.text7.value = eval(document.sum.text4.value) + eval(document.sum.text5.value) + eval(document.sum.tex6.value)
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="sum" onSubmit="SUM();return false;">
A<INPUT TYPE="text" NAME="text1" onChange="SUM()" SIZE="10"><BR>
B<INPUT TYPE="text" NAME="text2" onChange="SUM()" SIZE="10"><BR>
C<INPUT TYPE="text" NAME="text3" onChange="SUM()" SIZE="10"><BR>
D=A+B-C<INPUT TYPE="text" NAME="text4" onChange="SUM()" SIZE="10"><BR>
E<INPUT TYPE="text" NAME="text5" onChange="SUM()" SIZE="10"><BR>
F<INPUT TYPE="text" NAME="text6" onChange="SUM()" SIZE="10"><BR>
G=D+E+F<INPUT TYPE="text" NAME="text7" onChange="SUM()" SIZE="10"><BR>
</FORM>
</BODY>
</HTML>
No.5ベストアンサー
- 回答日時:
たまコです。
NIGHT2000さんの方法でFORMを沢山生成しても構わないのなら、
こんな感じにもできますね。
#インデントのため、全角スペース入れてます。ご注意。
<html>
<head>
<title>タイトルバーに表示されるテキスト</title>
<script language="JavaScript">
<!--
function TotalSum(i)
{
var evalStr = eval("document.sum" + i);
with(evalStr)
{
if(!isNaN(text1.value) && !isNaN(text2.value) && !isNaN(text3.value) &&
text1.value && text2.value && text3.value)
{
text4.value = eval(text1.value) + eval(text2.value) - eval(text3.value);
}
if( !isNaN(text5.value) && !isNaN(text6.value) &&
text5.value && text6.value)
{
text7.value = eval(text4.value) + eval(text5.value) + eval(text6.value);
}
}
}
//-->
</script>
</head>
<body bgcolor="#ffffff">
<script language="JavaScript">
<!--
var i;
for(i = 1; i < 5; i++)
{
document.write('<form name="sum' + i + '" onSubmit="TotalSum(' + i + ');return false;">\n');
document.write('A<input type="text" name="text1" onChange="TotalSum(' + i + ')" size="10"><br>\n');
document.write('B<input type="text" name="text2" onChange="TotalSum(' + i + ')" size="10"><br>\n');
document.write('C<input type="text" name="text3" onChange="TotalSum(' + i + ')" size="10"><br>\n');
document.write('D=A+B-C<input type="text" name="text4" onChange="TotalSum(' + i + ')" size="10"><br>\n');
document.write('E<input type="text" name="text5" onChange="TotalSum(' + i + ')" size="10"><br>\n');
document.write('F<input type="text" name="text6" onChange="TotalSum(' + i + ')" size="10"><br>\n');
document.write('G=D+E+F<input type="text" name="text7" onChange="TotalSum(' + i + ')" size="10"><br>\n');
document.write('</form>\n');
}
//-->
</script>
</body>
</html>
やりすぎ?(A^-^;)
でもこれならfor文の中の「i = 1; i < 5;」の部分を変更するだけで
いくらでも増やせますよ(笑
まぁ、邪道ですがこんな方法もあるという事で。。。
参考になれば幸いです。
ご回答ありがとうございます。
なんせ、登録は50件あるときもあるそうなので大変参考になります。
ほんとにありがとうございます。
自分では、変数をたくさんつけて力技になってしまい、とてもじゃないですが他の人にはこんな自分のソースを見せれないと感じています。
ですが、みなさんのおかげで何とかなるかも・・・って感じです。
自分でも考えてみますが、なにかひらめきがございましたらまたお願いします。
No.4
- 回答日時:
ソースありがとうございます。
えと、やはりinputタグをそのままコピペして使ってらっしゃったのですね(^^;
name属性は同じ名前を付けることが出来ないので、エラーを起こしてしまいます。
簡略化したソースを考えて教えて差し上げたいのですが、ちょっと今仕事がたてこんでまして・・・
めちゃ基本仕様のソースでよいでしょうか(^^;
フォーム名を変え、その分のfunctionの追加にて、作成してます。
<HTML>
<HEAD>
<TITLE>
タイトルバーに表示されるテキスト
</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--JavaScript
function SUM(){
if(!isNaN(document.sum.text1.value) && !isNaN(document.sum.text2.value) && !isNaN(document.sum.text3.value) && document.sum.text1.value && document.sum.text2.value && document.sum.text3.value){
document.sum.text4.value = eval(document.sum.text1.value) + eval(document.sum.text2.value) - eval(document.sum.text3.value)
}
if( !isNaN(document.sum.text5.value) && !isNaN(document.sum.text6.value) && document.sum.text5.value && document.sum.text6.value){
document.sum.text7.value = eval(document.sum.text4.value) + eval(document.sum.text5.value) + eval(document.sum.text6.value)
}
}
function SUM2(){ //このnunctionを追加してます
if(!isNaN(document.sum2.text1.value) && !isNaN(document.sum2.text2.value) && !isNaN(document.sum2.text3.value) && document.sum2.text1.value && document.sum2.text2.value && document.sum2.text3.value){
document.sum2.text4.value = eval(document.sum2.text1.value) + eval(document.sum2.text2.value) - eval(document.sum2.text3.value)
}
if( !isNaN(document.sum2.text5.value) && !isNaN(document.sum2.text6.value) && document.sum2.text5.value && document.sum2.text6.value){
document.sum2.text7.value = eval(document.sum2.text4.value) + eval(document.sum2.text5.value) + eval(document.sum2.text6.value)
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<TABLE>
<FORM NAME="sum">
<TR>
<TD>A<INPUT TYPE="text" NAME="text1" onChange="SUM()" SIZE="10"><BR></TD>
<TD>B<INPUT TYPE="text" NAME="text2" onChange="SUM()" SIZE="10"><BR></TD>
<TD>C<INPUT TYPE="text" NAME="text3" onChange="SUM()" SIZE="10"><BR></TD>
<TD>D=A+B-C<INPUT TYPE="text" NAME="text4" onChange="SUM()" SIZE="10"><BR></TD>
<TD>E<INPUT TYPE="text" NAME="text5" onChange="SUM()" SIZE="10"><BR></TD>
<TD>F<INPUT TYPE="text" NAME="text6" onChange="SUM()" SIZE="10"><BR></TD>
<TD>G=D+E+F<INPUT TYPE="text" NAME="text7" onChange="SUM()" SIZE="10"><BR></TD>
</TR>
</FORM> <!--一度フォームを閉じてます-->
<FORM NAME="sum2"> <!--違うフォームとして作成してます-->
<TR>
<TD>A<INPUT TYPE="text" NAME="text1" onChange="SUM2()" SIZE="10"><BR></TD>
<TD>B<INPUT TYPE="text" NAME="text2" onChange="SUM2()" SIZE="10"><BR></TD>
<TD>C<INPUT TYPE="text" NAME="text3" onChange="SUM2()" SIZE="10"><BR></TD>
<TD>D=A+B-C<INPUT TYPE="text" NAME="text4" onChange="SUM2()" SIZE="10"><BR></TD>
<TD>E<INPUT TYPE="text" NAME="text5" onChange="SUM2()" SIZE="10"><BR></TD>
<TD>F<INPUT TYPE="text" NAME="text6" onChange="SUM2()" SIZE="10"><BR></TD>
<TD>G=D+E+F<INPUT TYPE="text" NAME="text7" onChange="SUM2()" SIZE="10"><BR></TD>
</TR>
</FORM>
</table>
</BODY>
</HTML>
お忙しいところ、ありがとうございます。
NIGHT2000さんの指摘されたように、変数をいくつも作ってしてみましたがこちらの担当者によると、レコードが多いときには50件の登録があるということで、そんな・・・って感じで簡略化できないか考えております。
いろいろと、お力になっていただきありがとうございます。
もし、時間にゆとりができたと時は、よろしくお願いいたします。
もう少し、上のソースを参考に考えさせていただきます。
No.3
- 回答日時:
yu-kichanさんの言うとおり、上記のソースでは「tex6」の記述ミス以外に問題はなさそうです。
「コピペで複数行に増やすして問題の出たソース」というのを見せていただけませんか?
ちなみに、
>HTMLのタグをそのままコピーして貼り付けて
というのは、
inputタグの「NAME="text5"」などの記述もそのまま使っているということでしょうか??
もしそうだとしたら動きません・・・(^^;
NAME属性は、すべて別の名前に設定しなくてはなりません。そして、追加した分のソースをスクリプト側にも追加する必要があります。
検討違いなことを言っていたらごめんなさい。(^^;
とにかく問題のソースがわからないので・・・
HTMLの部分は、こういう感じでコピペしています。
<HTML>
<HEAD>
<TITLE>test</TITLE>
</HEAD>
<TABLE>
<FORM NAME="sum" onSubmit="SUM();return false;">
<TR>
<TD>A<INPUT TYPE="text" NAME="text1" onChange="SUM()" SIZE="10"><BR></TD>
<TD>B<INPUT TYPE="text" NAME="text2" onChange="SUM()" SIZE="10"><BR></TD>
<TD>C<INPUT TYPE="text" NAME="text3" onChange="SUM()" SIZE="10"><BR></TD>
<TD>D=A+B-C<INPUT TYPE="text" NAME="text4" onChange="SUM()" SIZE="10"><BR></TD>
<TD>E<INPUT TYPE="text" NAME="text5" onChange="SUM()" SIZE="10"><BR></TD>
<TD>F<INPUT TYPE="text" NAME="text6" onChange="SUM()" SIZE="10"><BR></TD>
<TD>G=D+E+F<INPUT TYPE="text" NAME="text7" onChange="SUM()" SIZE="10"><BR></TD>
</TR>
<TR>
<TD>A<INPUT TYPE="text" NAME="text1" onChange="SUM()" SIZE="10"><BR></TD>
<TD>B<INPUT TYPE="text" NAME="text2" onChange="SUM()" SIZE="10"><BR></TD>
<TD>C<INPUT TYPE="text" NAME="text3" onChange="SUM()" SIZE="10"><BR></TD>
<TD>D=A+B-C<INPUT TYPE="text" NAME="text4" onChange="SUM()" SIZE="10"><BR></TD>
<TD>E<INPUT TYPE="text" NAME="text5" onChange="SUM()" SIZE="10"><BR></TD>
<TD>F<INPUT TYPE="text" NAME="text6" onChange="SUM()" SIZE="10"><BR></TD>
<TD>G=D+E+F<INPUT TYPE="text" NAME="text7" onChange="SUM()" SIZE="10"><BR></TD>
</TR>
・
・
・
</FORM>
</BODY>
</HTML>
ということは、それぞれに、Functionを作っていかなければならないのでしょうか?すっきり簡単にする方法がありましたら、ぜひお願いいたします。
No.2
- 回答日時:
>HTMLで、一行だけだときちんと処理してくれるのですが、コピペで、複数行に増やすと処理してくれないんです・・・
すみません。現象が分かりません。
上のソースをhtmlにしてやってみると、ちゃんと計算されますが?
複数行に増やすというのは、どのようにしているのですか?
この回答への補足
え~~とですね。
今は、WEB画面から、例えば、住所録みたいなのを作って、それに何人か分をまとめてDBに落とすというものを作っているんです。
そこで、一人ぶんのデータを入力したらその都度保存していくのではなく、何人かぶんをまとめてDBに落とすため、同じフィールドをまとめて何行か表示させて一気に入力しようというものです。
Excelのシートで、表を想像していただくと分かりやすいと思います。
複数行に増やすときは、HTMLのタグをそのままコピーして貼り付けて、一つのテーブルに格納しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
読み込んだQRコードをフォーム...
-
特定の文字列を複数抜き出した...
-
出発駅A、到着駅Bを選択すると...
-
HTMLで作った時報アプリが動き...
-
画面遷移を行わずに同一ページ...
-
jsで、switch文で書かれた分をi...
-
①入力フォーム→②確認表示画面→③...
-
IndexedDB を使ってファイルア...
-
React hooksが値を返して配列変...
-
jsで質問です。 displayプロパ...
-
HTMLタグに複数のクラスを設定...
-
二次元配列の中の各行の要素を...
-
GASに文字列として関数を入れる...
-
フロントエンドフレームワーク...
-
オブジェクトから任意のプロパ...
-
セレクトボックスを2つ設けて選...
-
指定時間になったら、WEBサイト...
-
変数名をどのようにつけるのが...
-
disabled プロパティが表示され...
-
Colorboxがうまく設置できません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列の中の各行の要素を...
-
画面遷移を行わずに同一ページ...
-
指定時間になったら、WEBサイト...
-
変数名をどのようにつけるのが...
-
disabled プロパティが表示され...
-
フロントエンドフレームワーク...
-
セレクトを全て選択されていな...
-
特定の文字列を複数抜き出した...
-
ボタンを押したあとに画像を表...
-
読み込んだQRコードをフォーム...
-
配列の1要素を代入した変数を使...
-
出発駅A、到着駅Bを選択すると...
-
React hooksが値を返して配列変...
-
Q&Aの掲示板を作成していてヤフ...
-
jQueryローディングアニメーシ...
-
スマホ上で、左右スワイプで次...
-
【GAS】WEBアプリでハイパーリ...
-
sessionStorageを調べています。
-
オブジェクトから任意のプロパ...
-
追加ボタンを押した際に ok ボ...
おすすめ情報