使用 javascript 循环检查复选框

Nic*_*Law 2 html javascript jquery

我有许多复选框,我想检查它们是被选中 (1) 还是未选中 (0)。我想将结果放在一个数组中,以便我可以将它们发送到服务器以保存在表中。我试过下面的代码:

<input class="publish" id="chkBox1" type="checkbox" checked>
<input class="publish" id="chkBox2" type="checkbox" checked>
<input class="publish" id="chkBox3" type="checkbox" checked>
<input class="publish" id="chkBox4" type="checkbox" checked>
<input class="publish" id="chkBox5" type="checkbox" checked>

<script>
$('#save-btn').click(function(evt){
    evt.preventDefault();

    var numberOfChBox = $('.publish').length;
    var checkArray = new Array(); 

    for(i = 1; i <= numberOfChBox; i++) {

        if($('#chkBox' + i).is(':checked')) {
            checkArray[i] = 1;  
        } else {
        checkArray[i] = 0;
        }
    }
    alert(checkArray);
});
</script>
Run Code Online (Sandbox Code Playgroud)

但警报输出:

,1,0,1,0,1,1
Run Code Online (Sandbox Code Playgroud)

除了 undefined 中的第一个索引外,这些值都是正确的。总共只有 5 个复选框,但数组有 6 个索引长。为什么是这样?

Tat*_*nit 7

尝试这种有效的方式 bruvo :) http://jsfiddle.net/v4dxu/在 html 中使用适当的结束标记:http : //jsfiddle.net/L4p5r/

很好的链接:https : //learn.jquery.com/javascript-101/arrays/

同样在你的 html 结束你的标签/>

<input class="publish" id="chkBox4" type="checkbox" checked>

休息应该有帮助 :)

代码

var checkArray = new Array(); 
$('input[type=checkbox]').each(function () {
    this.checked ? checkArray.push("1") : checkArray.push("0");
});

alert(checkArray);
Run Code Online (Sandbox Code Playgroud)