1

我有一个javascipt如下:

if(document.forms[0].Check_All.value=="Select All"){
    for (i = 0; i < chk.length; i++){
            chk[i].checked = true ;
            document.forms[0].Check_All.value="DeSelect All";

        }
    }else{
        for (i = 0; i < chk.length; i++){
        chk[i].checked = false ;
        document.forms[0].Check_All.value="Select All";
        }
    }

它用于选择和取消选择复选框。当 chk.length=2 及以上时它工作正常。但是,当我只有 1 条记录时,chk.length 是未定义的,它不会工作。猜猜为什么?

4

2 回答 2

2

发生这种情况是因为当只有具有指定名称的表单元素时,您可以直接访问该元素,而对于更多具有相同名称的元素,您将获得一个集合。

你可以在像这样的简单情况下解决这个问题,比如

if(chk.length == undefined) {
  chk = new Array(chk);
}

如果它之前不是一个集合,那么之后chk将是一个数组——它的行为类似于一个集合,至少在您可以访问它的长度属性并使用数字索引访问它的(一个)元素的方式上。

于 2013-04-15T15:44:48.127 回答
0

您可以使用 JQuery 函数来检查所有复选框

$("input :checkbox").each(function(){
    $(this).prop('checked', true);
});
于 2013-04-15T15:46:28.260 回答