- ベストアンサー
複数選択ができません
multipleの練習をしていて、以下のように超簡易買い物オーダーフォームを作ったんですけど、単品での値段は出てくるのですが、複数選択をしたときに合計した金額が出てきません。アドバイスお願いします☆ <html> <head> <SCRIPT LANGUAGE ="JavaScript"> function keisan(){ var sum; for (i=0;i<document.aaa.erabu.options.length;i++){ if(document.aaa.erabu.options[i].selected){ sum=document.aaa.erabu.options[i].value; } document.aaa.goukei.value=sum*document.aaa.kazu.value; } }</SCRIPT> </head> <body> <h2>注文表</h2> お好きな品をクリックしてください。複数品目を選択する際には、 Ctrlを押しながらクリックしてください。 <form name="aaa"> <select name="erabu"size="4"multiple> <option selected value="65">ハンバーガー <option value="80">チーズバーガー <option value="150">ポテト <option value="100">ジュース </select> を<input name="kazu" value="1">セット<br> 注文の内容が決まりましたら[合計」ボタンを押してください。<br> <input type="button" value="合計" onclick="keisan()"><input name="goukei">円 </form> </body> </html>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
実はvar sumがなくてもちゃんと動くんですよ。 どう違うのかというと・・。 var宣言を関数内で行うとローカル変数に、 var宣言を関数外で行うとグローバル変数に、 宣言なしだとどこで書いてもグローバル変数に、 となります。 さて、例えば var y=3; document.write(y); ff(); document.write(y); function ff(){ var y=2; document.write(y); } は、「323」と表示されます。 お分かり頂けましたでしょうか?
その他の回答 (2)
- timon
- ベストアンサー率50% (1/2)
スクリプトの内容を以下のようにして下さい。 これで大丈夫だと思います。 <SCRIPT LANGUAGE ="JavaScript"> function keisan(){ var sum; sum=0; for (i=0;i<document.aaa.erabu.options.length;i++){ if(document.aaa.erabu.options[i].selected){ sum+=Number(document.aaa.erabu.options[i].value); } document.aaa.goukei.value=sum*document.aaa.kazu.value; } } </SCRIPT>
- taku12
- ベストアンサー率41% (14/34)
下記のページの「1. 複数選択リストの値を返す」が質問内容にぴったりだと思います。参考にしてください。
お礼
ありがとうございます☆さっそく参考にしてがんばってみますね(^^)
お礼
ありがとうございました☆ばっちり動きましたよ~~!もう一つ質問いいですか? iって変数ですよねぇ?sumみたいにvar iってやらなくてもいいんですか?