プロが教えるわが家の防犯対策術!

Javascriptでラジオボタンとチェックボックスの値を足して計算しようとしました。
しかし、チェックボックス同士の値は足されるのですが、ラジオボタンの値は計算されずにそのまま表示されます。
ラジオボタンの値も足されるようにするにはどうしたら良いでしょうか。
よろしくお願いいたします。

javascript↓

function calc2() {
var ss="";
var fs= document.forms;
for (var f=0 ; f<fs.length ; f++) {//formが複数ある場合、formの数だけ繰り返し
d = fs[f].elements;//dにform内のエレメントを代入
checkvalue = 0;//checkvalueの値を0にする。ここをcheckvalue = ""; にすると、文字列として扱われる
for (var i = 0; i < d.length; i++ ) {//form内のエレメントの数だけ繰り返し
if (d[i].checked == true) {//チェックボックスがチェックされていたら
checkvalue += Number(d[i].value);//checkvalueの値(整数の場合)にそれぞれのエレメントの値(value)を追加していく
}
}
ss += checkvalue;
function addFigure(str) {//3桁のカンマ挿入
var num = new String(str).replace(/,/g, "");
while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
return num;
}
var sss = addFigure(ss);//ssの値にカンマを挿入してsssに代入
}
document.getElementById('ch_all').innerHTML = "\\" + sss;//html本文内のid="ch_all"の場所に書き出す
}

html↓
<html>
<head>
<script type="text/javascript">

</script>
<script type='text/javascript' src='test_checked2.js'></script>
</head>
<body>
<div id="ch_all" style="background-color: #eeeeee;"></div>
<hr />
<form name="Tform1">
<input type="radio" name="test" value="34500" onclick="calc2()">
\34,500
<input type="radio" name="test" value="15000" onclick="calc2()">
\15,000
<input type="radio" name="test" value="3000" onclick="calc2()">
\3,000
<input type="radio" name="test" value="4444" onclick="calc2()">
\4,444
</form>
<form name="Tform2">
<input type="checkbox" name="test2" value="34500" onclick="calc2()">
\34,500
<input type="checkbox" name="test2" value="15000" onclick="calc2()">
\15,000
<input type="checkbox" name="test3" value="3000" onclick="calc2()">
\3,000
<input type="checkbox" name="test4" value="4444" onclick="calc2()">
\4,444
</form>
</body>
</html>

A 回答 (1件)

チェックボックスとラジオボタンの値を合計すればよいと解釈しました。


解説は省略。(value値はカンマなしと仮定)

function calc2() {
var i = 0, f, frms = document.forms;
var j, el, total = 0, num;
while (f = frms[i++]) {
j = 0;
while (el = f.elements[j++]) {
if (el.checked && (el.type == 'radio' || el.type == 'checkbox') && !isNaN(el.value)) total += 1 * el.value;
}
}
num = total.toString();
while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
document.getElementById('ch_all').innerHTML = '\\' + num;
}
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!
希望通りの動作ができました。しかもコードがすっきりして見やすいです。
素晴らしい!
頂いた回答を元に、もっと勉強したいと思います。
本当にありがとうございました。

お礼日時:2010/04/02 06:22

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