2013-03-26 200 views
3

我遇到了取消選中所有複選框的問題。當我點擊切換所有複選框時,它可以檢查所有複選框。但是,如果我取消選中切換所有複選框,則什麼都不會發生。所有複選框不是未選中的。下面是我在JavaScript編碼:javascript:取消選中所有複選框

<script> 
var isAllCheck = false; 
function togglecheckboxes(cn){ 

    var cbarray = document.getElementsByName(cn); 
    for(var i = 0; i < cbarray.length; i++){ 

     if(isAllCheck == false){ 
      cbarray[i].checked = "true"; 
      //alert("it is false"); 
     }else{ 
      cbarray[i].removeAttribute("checked"); 
      //alert("it is true"); 
     } 
} 
isAllCheck = !isAllCheck; 
} 
</script> 

我甚至試過這種編碼,但還是失敗了:

<script> 
var isAllCheck = false; 
function togglecheckboxes(cn){ 

    var cbarray = document.getElementsByName(cn); 
    for(var i = 0; i < cbarray.length; i++){ 

     if(isAllCheck == false){ 
      cbarray[i].checked = "true"; 
      //alert("it is false"); 
     }else{ 
      cbarray[i].checked = "false"; 
      //alert("it is true"); 
     } 
} 
isAllCheck = !isAllCheck; 
} 
</script> 

下面是我供你參考PHP代碼:

echo "\t<div class='item'> 
<span class='CDTitle'>{$cd['CDTitle']}</span> 
<span class='CDYear'>{$cd['CDYear']}</span> 
<span class='catDesc'>{$cd['catDesc']}</span> 
<span class='CDPrice'>{$cd['CDPrice']}</span> 
<span class='chosen'><input type='checkbox' name='cd[]' value='{$cd['CDID']}' title='{$cd['CDPrice']}' /></span> 
</div>\n"; 

任何提示關於解決這個問題。提前致謝!

+0

你還沒有說過是什麼問題。 :-) – isherwood 2013-03-26 14:51:36

+0

@isherwood我已經修復了我的帖子 – Boon 2013-03-26 14:57:29

回答

3

的問題歸結到你如何設置checkox的checked財產。你正在分配一個字符串「true」,你應該分配布爾值true

因此,要解決你的代碼很簡單:

if(isAllCheck == false){ 
    cbarray[i].checked = true; 
}else{ 
    cbarray[i].checked = false; 
} 

,或者更簡潔

cbarray[i].checked = !isAllCheck 

活生生的例子:http://jsfiddle.net/SEJZP/

+0

非常感謝。 – Boon 2013-03-26 15:05:29

0

試試這個

<script> 
var isAllCheck = false; 
function togglecheckboxes(master,cn){ 

    var cbarray = document.getElementsByName(cn); 
    for(var i = 0; i < cbarray.length; i++){ 

     if(isAllCheck == false){ 
      cbarray[i].checked = true; 
      //alert("it is false"); 
     }else{ 
      cbarray[i].checked = false; 
      //alert("it is true"); 
     } 
} 
isAllCheck = !isAllCheck; 
} 
</script> 
+0

@iBlue謝謝你的回覆。我也試過你的代碼,但仍然不能。 – Boon 2013-03-26 14:54:36

0

您可以用jQuery做到這一點非常容易和更容易理解: )

$('#mybutton').click(function(e) { 
    $('.myCheckboxes').each(function(i,item){ 
     $(item).attr('checked', !$(item).is(':checked')); 
    }); 
}); 

Try on jsFiddle

0

你也可以使它成爲一個布爾變量。

<script> 
var isAllCheck = new Boolean(false); 
function togglecheckboxes(cn){ 

var cbarray = document.getElementsByName(cn); 
for(var i = 0; i < cbarray.length; i++){ 

    if(isAllCheck){ //and then you could make this shorter. 
     cbarray[i].checked = true; 
     //alert("it is false"); 
    }else{ 
     cbarray[i].removeAttribute("checked"); 
     //alert("it is true"); 
    } 
} 
isAllCheck = !isAllCheck; 
} 
</script> 
相關問題