2013-04-15 42 views
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是未定义的,它不会工作。任何猜测为什么?

回答

2

发生这种情况的原因是,只有具有指定名称的表单元素时,才能直接访问该元素,而具有相同名称的更多元素则会获得集合。

可以解决,在简单的情况下,像这样的东西,如

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

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

+1

这是一个错误,对吗? –

0

您可以使用jQuery功能检查所有复选框

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