2013-04-15 44 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); 
});