• ベストアンサー

複数選択ができません

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>

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

  • ベストアンサー
  • timon
  • ベストアンサー率50% (1/2)
回答No.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)
回答No.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>

tomo-nao
質問者

お礼

ありがとうございました☆ばっちり動きましたよ~~!もう一つ質問いいですか? iって変数ですよねぇ?sumみたいにvar iってやらなくてもいいんですか?

  • taku12
  • ベストアンサー率41% (14/34)
回答No.1

下記のページの「1. 複数選択リストの値を返す」が質問内容にぴったりだと思います。参考にしてください。

参考URL:
http://www1.plala.or.jp/umechan/tips/33.htm
tomo-nao
質問者

お礼

ありがとうございます☆さっそく参考にしてがんばってみますね(^^)

関連するQ&A