- 締切済み
Jqueryを使って値の合計を簡単に算出したい
複数のフィールドに設定されている値を特定のイベント発生時に合算しています。 現在は、それぞれの項目をひとつづつ加算し合計を算出していたのですが、項目が徐々に増えてきており、項目を増やすたびに計算を修正しないといけない為、これをどうにかして一括処理できないか考えています。 いろいろ調べるとJqueryではセレクタというものがあり、IDやCLASS等を前方一致で引っ掛けて一括処理できるようなのですが、いまいち処理方法がわかりません。いろいろなサンプルを試したのですが、条件に合致した部分に何かを設定するものばかりで、その項目の値を取得して処理をするようなイメージがつかめません。 セレクタにこだわってはいません。 動的に増える項目を関数化した処理で一括で合算したいのですがなにかよい方法はないでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
class="abc def ghi abcdef" と複数列挙可能 単純に正規表現でマッチさせたので abc で検査するとabcdefも対象となるので注意。 スピードを稼ぐならindexOfかな? Jqueryを使わずとも...
<html> <body> <form> <input type="text" value="1"><br> <input type="text" value="100" class="taisho"><br> <input type="text" value="2"><br> <input type="text" value="100" class="taisho"><br> <input type="text" value="3"><br> <input type="text" value="100" class="taisho"><br> <input type="text" value="4"><br> <input type="text" value="100" class="taisho"><br> <input type="text" value="5"><br> <input type="text" value="100" class="taisho"><br> G<input type="text" value="" id="a"><br> <input type="button" value="計算" onclick="keisan('a','taisho')"> </form> <script> function keisan(id,classname){ var r=RegExp(classname); var cn=[],o=document.getElementsByTagName('input'); for(var i=0,m=o.length;i<m;i++) if(o[i].className.match(r)) cn.push(o[i]); //cn=document.getElementsByClassName( classname ); var total=0; for(i=0,m=cn.length;i<m;i++){ total+=cn[i].value-0; } document.getElementById( id ).value = total; } function keisan2(id,classname){ var total=0, o=document.getElementsByTagName('input'); for(var i=0,m=o.length;i<m;i++) if(o[i].className.match(RegExp(classname))) total+=o[i].value-0; document.getElementById( id ).value = total; } </script> </body></html> css_class合致で集計!?