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>

このQ&Aに関連する最新のQ&A

A 回答 (3件)

実はvar sumがなくてもちゃんと動くんですよ。


どう違うのかというと・・。

var宣言を関数内で行うとローカル変数に、
var宣言を関数外で行うとグローバル変数に、
宣言なしだとどこで書いてもグローバル変数に、
となります。

さて、例えば

var y=3;
document.write(y);

ff();

document.write(y);

function ff(){
var y=2;
document.write(y);
}

は、「323」と表示されます。
お分かり頂けましたでしょうか?
    • good
    • 0

スクリプトの内容を以下のようにして下さい。


これで大丈夫だと思います。

<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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/19 12:59

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

参考にしてください。

参考URL:http://www1.plala.or.jp/umechan/tips/33.htm
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/19 12:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報