2013-08-21 157 views
1

我做了一个全选框,但我有另一个问题。如何选择所有元素或取消选择所有元素

我该如何让它不被选中呢?

这里是我的javascript代码:

var tab1 = document.getElementById("tbl1"); 
var tab2 = document.getElementById("tbl2"); 
var tab3 = document.getElementById("tbl3"); 
var tab4 = document.getElementById("tbl4"); 
var tab5 = document.getElementById("tbl5"); 
var tab6 = document.getElementById("tbl6"); 
var tab7 = document.getElementById("tbl7"); 
var tab8 = document.getElementById("tbl8"); 
var tab9 = document.getElementById("tbl9"); 
var elems = document.getElementById("checkall"); 


if (elems.checked == true) { 

    tab1.checked = true; 
    tab2.checked = true; 
    tab3.checked = true; 
    tab4.checked = true; 
    tab5.checked = true; 
    tab6.checked = true; 
    tab7.checked = true; 
    tab8.checked = true; 
    tab9.checked = true; 
} 

有没有办法做到这一点?

+1

'if(elems.checked == false){ tab1.checked = false; tab2.checked = false; tab3.checked = false; tab4.checked = false; tab5.checked = false; tab6.checked = false; tab7.checked = false; tab8.checked = false; tab9.checked = false; }' – undone

+3

或只是将逻辑改为'tab1.checked = elems.checked;'等... – dc5

+0

@undone我复制和粘贴你写的东西,但它仍然选择所有,但不能取消选择 – Luk

回答

4

给一个共同的类名称为您的孩子复选框,例如child-selector

var checked = document.getElementById("checkall").checked; 
var childElems = document.getElementsByClassName('child-selector'); 

for(var i=0; i< childElems.length; i++){ 
    childElems[i].checked = checked; 
} 
+2

仅供参考:IE不支持** getElementsByClassName **! – undone

0
<input type="checkbox" id="tbl1" /><br /> 
<input type="checkbox" id="tbl2" /><br /> 
<input type="checkbox" id="tbl3" /><br /> 
<input type="checkbox" id="tbl4" /><br /> 
<input type="checkbox" id="tbl5" /><br /> 
<input type="checkbox" id="tbl6" /><br /> 
<input type="checkbox" id="tbl7" /><br /> 
<input type="checkbox" id="tbl8" /><br /> 
<input type="checkbox" id="tbl9" /><br /> 
<input type="checkbox" id="checkall" onclick="selectDeselect();" /> 


<script> 
     function selectDeselect(){ 
      var elems = document.getElementById("checkall"); 
      for(var i = 1;i<=9;i++){ 
       tab = document.getElementById("tbl" + i); 
       tab.checked = elems.checked; 
      } 

     } 
</script> 
0

使用jQuery,使这个更简单

<input type="checkbox" id="check_all" onclick='check_uncheck();'/> 
    <input type="checkbox" name="tab[]" id="tbl1" /> 
    <input type="checkbox" name="tab[]" id="tbl2" /> 
    <script> 
    function check_uncheck() { 
     jQuery("[name='tab[]']").prop('checked', $('#check_all').prop('checked')); 
    } 
    </script> 
+0

如果你想把东西放在代码块中,选择你的代码并按CTRL + K. – undone

0
var checkAll = elems.checked; 
tab1.checked = checkAll; 
tab2.checked = checkAll; 
tab3.checked = checkAll; 
tab4.checked = checkAll; 
tab5.checked = checkAll; 
tab6.checked = checkAll; 
tab7.checked = checkAll; 
tab8.checked = checkAll; 
tab9.checked = checkAll; 

或者你可以给这些复选框命名,document.getElementsByName将会返回包含tab1到tab9的元素的集合。然后你可以使用for循环来分配属性。
希望它有帮助。