Javascript 选择/取消选择所有不适用于单个记录

Javascript 选择/取消选择所有不适用于单个记录,javascript,html,jsp,Javascript,Html,Jsp,我有一个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 =

我有一个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";
        }
    }
if(document.forms[0]。全选。值==“全选”){
对于(i=0;i

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

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

在这种简单的情况下,你可以通过以下方法来解决这个问题

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

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

可以使用JQuery函数选中所有复选框

$("input :checkbox").each(function(){
    $(this).prop('checked', true);
});