1

チェックボックスグループの合計を(データベースから)取得しようとしています:

<script type="text/javascript">

$.ajax({

// SOME CODE HERE

$("#permisos01Div").append("<input type='checkbox' name='chk_permisos' 
       onClick='VerCostoPermiso()' value='"+data[i].costo+"' > " + 
                                                data[i].permiso + "<br>");

// SOME CODE HERE

});

function VerCostoPermiso(){
    var group = document.getElementById('chk_permisos');
    var sum = 0.00;
    for (var i=0; i<group.length; i++){
        if (group[i].checked == true){
            sum = sum + parseFloat(group[i].value); 
        }
    }
    alert(sum);
}

</script>

結果は次のようになります。ボックスをチェックするたびに、チェックされた合計 cbs の合計を警告します。

コードが機能しません。どこに問題があるのか​​本当にわかりません。

回答ありがとうございます

4

4 に答える 4

0

ID が割り当てられていないようですが、getElementById を使用しています。getElementsByName を試してください。

于 2013-11-08T16:20:17.447 に答える
0

"chk_permisos" is the value of a name attribute and should be selected with documents.getElementsByName("chk_permisos"):

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript">
        function VerCostoPermiso() {
            var group = document.getElementsByName("chk_permisos");
            var sum = 0.00;
            for (var i = 0; i < group.length; i++) {
                if (group[i].checked == true) {
                    sum = sum + parseFloat(group[i].value);
                }
            }
            alert(sum);
        }
    </script>
</head>
<body>
    <div id="permisos01Div">
        <input type='checkbox' name='chk_permisos' onClick='VerCostoPermiso()' value='1'>A1<br>
        <input type='checkbox' name='chk_permisos' onClick='VerCostoPermiso()' value='10'>B10<br>
        <input type='checkbox' name='chk_permisos' onClick='VerCostoPermiso()' value='100'>C100<br>
    </div>
</body>
</html>
于 2013-11-08T16:32:04.240 に答える
0

jQueryを使用しているようですがname、IDではなく属性もあります:

var sum = 0;
$(":checkbox:checked[name=chk_permisos]").each(function() {
    sum += parseFloat(this.value);
});
于 2013-11-08T16:22:49.697 に答える