dポイントプレゼントキャンペーン実施中!

javascriptを学習しています。初級者のためご教授のほどお願いします。


<!DOCTYPE html>
<html lang="ja">
<head>
<script>
function kazu(){
var fObj = document.itemlist;
var price1 = fObj.item1.options[fObj.item1.selectedIndex].value;
var price2 = fObj.item2.options[fObj.item2.selectedIndex].value;

var total = parseFloat(price1) + parseFloat(price2);
document.getElementById("total").value = total;
}
</script>
</head>
<body>
<header>
<form action="#" name="itemlist" >
<table>
<tr>
<td>
<select name="item1" onchange="kazu()">
<option value="100">itemA-1</option>
<option value="200">itemA-2</option>
</select>
</td>
</tr>

<td>
<select name="item2" onchange="kazu()">
<option value="1000">itemB-1</option>
<option value="2000">itemB-2</option>
</select>
</td>
</tr>

<tr>
<td name="total">
<input type="text" value="" id="total" />
</td>
</tr>

</table>
</form>
</body>
</html>

上記の内容をfor文を使い動作するようにと思っています。
自分で以下の内容を考えたのですがが動作しません。
以下の内容の問題点を教えいただければと思います。なにとぞよろしくお願いいたします。

function kazu(){
var fObj = document.itemlist;
var len = document.itemlist.length;
for(i=1;i<=len;i++){
var price[i] = fObj.item[i].options[fObj.item[i].selectedIndex].value;
}
var total = parseFloat(price1) + parseFloat(price2);
document.getElementById("total").value = total;
}

A 回答 (2件)

> 以下の内容の問題点


select が multiple だったら?


<head> の中に肝心の <titele>xxx</title> が無いよ!
<meta charset="utf-8">みたいな文字コード指定が無いよ!
<header>が閉じてないよ!
<tr>が足りないよ!
ie は、どうか知らないけど、FXは、onchangeイベントをform要素で拾えるよ!


function kazu (){
 document.getElementById("total").value =
  Array.prototype.reduce.call (
   document.forms["itemlist"].querySelectorAll ('select[name^="item"] option'),
   function add (a, o) { return o.selected ? parseFloat (o.value) + a: a;}, 0);
}
    • good
    • 0
この回答へのお礼

記載ミスのご指摘ありがとうございました。
以後気を付けたいと思います。
回答ありがとうございます。
参考にさせていただき、学習に役立てたいと思います。

お礼日時:2013/08/16 21:24

一例です。



function kazu(){
var elems = document.forms["itemlist"].elements;
var len = elems.length;
var i, e, total = 0;
for(i = 0; e = elems[i++];) if(e.nodeName=="SELECT") total += parseFloat(e.value);
elems["total"].value = total;
}
    • good
    • 0
この回答へのお礼

すぐご回答いただきありがとうございます。
参考にさせていただき、学習に役立てたいと思います。

お礼日時:2013/08/16 21:29

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