Javascript - 如何获取复选框组的总和

时间:2013-11-08 16:16:53

标签: javascript checkbox sum

我正在尝试获取我的复选框组(来自数据库)的总和:

<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 个答案:

答案 0 :(得分:0)

看起来您没有分配ID,但是使用了getElementById。试试getElementsByName。

答案 1 :(得分:0)

似乎你在使用jQuery,你也有name属性,而不是ID:

var sum = 0;
$(":checkbox:checked[name=chk_permisos]").each(function() {
    sum += parseFloat(this.value);
});

答案 2 :(得分:0)

“chk_permisos”是name属性的值,应该使用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>

答案 3 :(得分:0)

如果有一个带有值的复选框,有时它的值为“on”。当你通过parseFloat函数放置它时会出现错误。我会在if语句中添加一个数字检查。

    if (group[i].checked == true && group[i].value*0 == 0);