• ベストアンサー

多数のテキストボックス値の合計値

例えば、 横に30列ほど可変に並ぶテキストボックスがあって、 更にそれが縦に100行ほど可変に並んでるような表があって、 各行の値を合計欄に表示するJavaScript。これをサーバサイドでなくクライアントで処理したいのです。 単純にスクリプトをずらーっと書いて作ることは、私でも可能ですが、スクリプト行を極力少なくしたいのです。何か良い知恵をお願いします。 (ちなみに、横に並ぶテキストボックス名は、aa_1,aa_2,aa_3・・・というふうに規則的に名付けています。)

質問者が選んだベストアンサー

  • ベストアンサー
  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.1

横列縦列共に動的に生成されると解釈してよろしいですか? それであれば、押さえるポイントとロジックとして、、、 1.縦軸の列数 2.1の要素数を持った配列 3.2の要素にそれぞれの横軸の最大カラム(テキストボックス)数 4.1~3を元に2重ループを回し、eval文を使ってフォーム変数名を動的に生成し順次加算する でいけると思います。

その他の回答 (1)

  • talepanda
  • ベストアンサー率58% (45/77)
回答No.2

例えば全自動なら <html> <head> <script type="text/javascript"> function I(x){return(document.getElementById(x));} function G(){ var ret="" for(var r=0;r<I("nr").value;++r){ ret+="<div>"; for(var c=0;c<I("nc").value;++c)ret+="<input type='text' value='"+Math.random()+"'></input> "; ret+="</div>"; } I("ss").innerHTML=ret; } function C(){ for(var es=I("ss").getElementsByTagName("div"),i=0;i<es.length;++i){ var ret=0; for(var sp=es[i].getElementsByTagName("input"),j=0;j<sp.length;ret+=Number(sp[j++].value)); es[i].innerHTML+=ret; } } </script> </head> <body> col:<input type="text" id="nc" value="30"></input> row:<input type="text" id="nr" value="10"></input> <button onclick="G()">Generate</button> <button onclick="C()">Calculate</button> <pre id="ss"></pre> </body> </html>