• ベストアンサー

[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">

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

  • ベストアンサー
  • nidoking
  • ベストアンサー率69% (18/26)
回答No.1

まず、本題とは関係ありませんが、このスクリプトだけなのであれば、"prototype.js"は必要ありません。 本題です 合計のための変数に、ttlを用意してあるのに、 pttlをサマリー中で使っているのはなぜですか? pttlとttlが混在しており、このままでは、チェックされた商品の最後の価格のみとなります。 pttlを使わずに、pttl -> ttlへ変更したら、 ちゃんと動くようですよ。

shadowdragon
質問者

お礼

早速のご丁寧なご回答を頂きありがとうございます。 なるほど。言われてみれば・・・。 まだまだ勉強が足りませんね。ありがとうございます。 HTML中に埋め込み、divタグで表示させたいのですが、この場合でもprototypeは必要なさそうでしょうか?

その他の回答 (1)

noname#246547
noname#246547
回答No.2

チェックされた項目の合計を算出したいのでしょうか? 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 + "円" } では?

shadowdragon
質問者

お礼

ご丁寧なご回答をいただきありがとうございます。 なるほど。そうですね。 こうして色々な方に見ていただけるとどんどん省略化されていくのは面白いですね。 ありがとうございます。勉強になります。

関連するQ&A

専門家に質問してみよう