javascriptでチェックボックスをチェックしただけで計算したい。


以下が今のコード
ーーーーーーーーー
<script type="text/javascript">
<!--
function tes() {
//変数に代入
d = document.Tform.elements;
//初期化
checkvalue = '';
for (i = 0; i < d.length; i++ ) {
//チェックボックスがONの時はその値を設定する
if (d[i].checked == true) {
checkvalue += d[i].value;
}
}
//設定結果の表示
document.getElementById("re").innerHTML = checkvalue;
}
//-->
</script>
<form name="Tform">
<table border="1">
<tr><td>menu</td><td>minu</td></tr>
<tr><td><input type="checkbox" value="60" onclick="tes()">cut</td><td>60</td></tr>
<tr><td><input type="checkbox" value="30" onclick="tes()">color</td><td>30</td></tr>
<tr><td>total</td><td id="re">結果</td></tr>
</table>
</form>
ーーーーーーーーー
これはhtmlに埋込んで書いてます。
-----------------
チェックボタンを押すとその都度時間計算をしてくれるスクリプトを書きたいが
6030の用に文字列のならびになる、計算するように書き換えたい、
当方javascript初心者で難儀しております、アドバイスおねがいします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/11/03 13:16:52

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

二ヶ所、書き換えました。

function tes() {
    //変数に代入
    d = document.Tform.elements;
    //初期化
    checkvalue = 0;     /* ★ここ */
    for (i = 0; i < d.length; i++ ) {
        //チェックボックスがONの時はその値を設定する
        if (d[i].checked == true) {
            checkvalue += parseInt(d[i].value);     /* ★ここ */
        }
    }
    //設定結果の表示
    document.getElementById("re").innerHTML = checkvalue;
}

  1. 変数 checkvalue を、空文字列ではなく、ゼロで初期化する
  2. チェックボックスの value 属性は、文字型なので、parseInt を使って数値型にする

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません