2013-03-26 138 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> 
相关问题