Javascript:主复选框控制表列中的所有复选框

问题描述:

我有5个复选框。其中之一是所有复选框的标题。如果我检查标题复选框,所有应该自动检查,如果我取消选中,所有应该取消选中。如果我取消选中任何子复选框,则标题应自动取消选中。Javascript:主复选框控制表列中的所有复选框

我的代码是这样的:

<html> 
<SCRIPT LANGUAGE="JavaScript"> 
       function checkAll() 
       { 

       if(pp_checkall.checked==true) 
       { 
        for (i = 1; i <= pp_check.length; i++) 
        pp_check[i].checked = true ; 
       } 
       else 
       { 
        for (i = 1; i <= pp_check.length; i++) 
        pp_check[i].checked = false ; 
       } 
       } 

</script> 
<SCRIPT LANGUAGE="JavaScript"> 
      function checkOne() 
       { 
       for (i = 1; i <= pp_check.length; i++) 
       { 
        if(pp_check[i].checked==false) 
        { 
        pp_checkall.checked = false ; 
        } 
       } 
       } 

       </script> 

<body> 
<table> 
<tr><th width="1px"><input type="checkbox" text="Dharan" name="pp_checkall" onclick="checkAll();"></th></tr> 
<tr> 
</tr> 
<tr> <input type="checkbox" name="pp_check" value="1" onclick="checkOne();"></tr> 
<!--<tr> <input type="checkbox" name="pp_check" value="2" onclick="checkOne();"></tr> 
<tr> <input type="checkbox" name="pp_check" value="3" onclick="checkOne();"></tr> 
<tr> <input type="checkbox" name="pp_check" value="4" onclick="checkOne();"></tr> --> 
</table> 
</body> 
</html> 

其优良的工作压力太大,但在某些情况下,只有一个<td>复选框会出现,从工作停止代码。请给一些解决方案来解决这个问题。

+0

不知道是否有帮助,但你已经错过了你的表格中''​​标签。 – Niklas 2012-08-14 07:00:41

+0

您是否尝试过从'i = 0'运行该循环? – yogi 2012-08-14 07:01:02

+0

是的,我也试过了 – Visa 2012-08-14 07:01:44

试试这个

<script type="text/javascript" language="javascript"> 

     var pp_check = document.getElementsByName('pp_check'); 
     var pp_checkall = document.getElementsByName('pp_checkall')[0]; 

     function checkAll() { 
      if (pp_checkall.checked == true) { 
       for (i = 0; i < pp_check.length; i++) 
        pp_check[i].checked = true; 
      } 
      else { 
       for (i = 0; i < pp_check.length; i++) 
        pp_check[i].checked = false; 
      } 
     } 

     function checkOne() { 
      var pp_check = document.getElementsByName('pp_check'); 
      for (i = 0; i < pp_check.length; i++) { 
       if (pp_check[i].checked == false) 
        pp_checkall.checked = false; 
      } 
     } 

</script> 
+0

没有它不是:-( – Visa 2012-08-14 07:16:23

您可以使用jQuery的一样。

$('input[name="pp_checkall"]').change(function() { 
     $('input[name=pp_check]').attr('checked', this.checked); 
    }); 

    $('input[name="pp_check"]').change(function() { 
     $('input[name="pp_checkall"]').prop(
      'checked', 
      $('input[name=pp_check]:not(:checked)').length === 0 ? true : false 
     ); 
    }); 

演示:http://jsfiddle.net/gPeh8/1/

+0

工作没有这一项也没有工作 – Visa 2012-08-14 07:23:20

+0

什么不工作,你得到了什么错误? – codef0rmer 2012-08-14 07:27:15

+0

预期的对象错误 – Visa 2012-08-14 07:28:28