- ベストアンサー
[javascript] checkboxによる合計の算出と表示について
こんにちわ。 表記についてですが、javascriptによるcheckboxのvalue値を算出させようと悪戦苦闘しております・・・。 皆様のお知恵を拝借できればと思います。 至らない部分が多々あると思いますが下記に現在のソースを貼り付けますので、色々とご指摘いただければ幸いです。 (リアルタイム表示のためprototypeを使用しています。) <head><script src="prototype.js" type="text/javascript"></script> <script language="javascript"> function mprice(){ chn = 6; ttl = 0; for(i=0; i<chn; i++) { if(document.step2.elements[i].checked==true) { var pttl = ttl + eval(document.step2.elements[i].value); } else if(typeof(pttl) == "undefined") pttl = 0; } document.getElementById('pttlr').innerHTML = pttl + "円" } </script> </head> <body> <form name="step2"> <input type="checkbox" value="105" id="food" onClick="mprice()">コーラ<br /> <input type="checkbox" value="315" id="food" onClick="mprice()">肉<br /> <input type="checkbox" value="1050" id="book" onClick="mprice()">参考書<br /> <input type="checkbox" value="210" id="sweet" onClick="mprice()">飴<br /> <input type="checkbox" value="525" id="book" onClick="mprice()">マンガ<br /> <input type="checkbox" value="3150" id="music" onClick="mprice()">CD<br /> </form> <div id="pttlr">
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず、本題とは関係ありませんが、このスクリプトだけなのであれば、"prototype.js"は必要ありません。 本題です 合計のための変数に、ttlを用意してあるのに、 pttlをサマリー中で使っているのはなぜですか? pttlとttlが混在しており、このままでは、チェックされた商品の最後の価格のみとなります。 pttlを使わずに、pttl -> ttlへ変更したら、 ちゃんと動くようですよ。
その他の回答 (1)
チェックされた項目の合計を算出したいのでしょうか? function mprice(){ chn = 6; ttl = 0; for(i=0; i<chn; i++) { if(document.step2.elements[i].checked==true) { ttl += eval(document.step2.elements[i].value); } } document.getElementById('pttlr').innerHTML = ttl + "円" } では?
お礼
ご丁寧なご回答をいただきありがとうございます。 なるほど。そうですね。 こうして色々な方に見ていただけるとどんどん省略化されていくのは面白いですね。 ありがとうございます。勉強になります。
お礼
早速のご丁寧なご回答を頂きありがとうございます。 なるほど。言われてみれば・・・。 まだまだ勉強が足りませんね。ありがとうございます。 HTML中に埋め込み、divタグで表示させたいのですが、この場合でもprototypeは必要なさそうでしょうか?