Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript check/uncheck all checkbox函数仅在有多个复选框时有效_Javascript - Fatal编程技术网

Javascript check/uncheck all checkbox函数仅在有多个复选框时有效

Javascript check/uncheck all checkbox函数仅在有多个复选框时有效,javascript,Javascript,我将一系列复选框设置为一个数组(name=“action[]”),并将一个JavaScript函数链接到另一个复选框以选中/取消选中所有复选框。当至少有两个复选框要选中时,它可以正常工作,但如果只有一个复选框,它就什么也不做。谁能给我指出正确的方向吗?谢谢 HTML: JavaScript: function doCheck(mainChk, fields) { for(i = 0; i < mainChk.form.elements[fields].length; i++) {

我将一系列复选框设置为一个数组(name=“action[]”),并将一个JavaScript函数链接到另一个复选框以选中/取消选中所有复选框。当至少有两个复选框要选中时,它可以正常工作,但如果只有一个复选框,它就什么也不做。谁能给我指出正确的方向吗?谢谢

HTML:


JavaScript:

function doCheck(mainChk, fields) {
  for(i = 0; i < mainChk.form.elements[fields].length; i++) {
    mainChk.form.elements[fields][i].checked = mainChk.checked;
  }
}
function-doCheck(mainChk,字段){
对于(i=0;i
如果只有一个复选框,那么
mainChk.form.elements[fields]
不是一个数组(-like结构)。我明白了——有没有一个好方法可以检查该项是否是数组?使用
typeOf
:知道了——但是如果是这样的话,我如何让它检查一个项目呢?我当然喜欢使用jQuery,但我需要[]因为这是在提交后由PHP处理的。您可以在输入上放置一个类,而不是使用name属性,并将其用作选择器。我将编辑我的答案以反映这一点。我喜欢这个想法,但它似乎不起作用,而且我在Firefox的错误控制台中也没有得到任何东西。没关系——我将它放在不同的JS include文件中。将它添加到我现有的jQuery表单validation include中可以使它像champ一样工作。谢谢
function doCheck(mainChk, fields) {
  for(i = 0; i < mainChk.form.elements[fields].length; i++) {
    mainChk.form.elements[fields][i].checked = mainChk.checked;
  }
}
<input type="checkbox" name="checkall" id="checkall" class="box">

<input type="checkbox" name="action[]" id="action" value="' . $something['someid'] . '" class="box check-child">
<input type="checkbox" name="action[]" id="action" value="' . $something['someid'] . '" class="box check-child">
$("#checkall").click(function(){
    if($(this).is(":checked"))
        $(".check-child").attr("checked", "checked");
    else
        $(".check-child").removeAttr("checked");
));