2013-08-05 41 views
0

我陷入了一个非常愚蠢的问题。我试图选择我使用表中的循环动态创建的所有复选框。在表格的头部我有一个复选框,我想在点击头部的复选框后选中表格中的所有复选框。 这是我的代码。使用javascript的onclick检查复选框?

<table> 
     <thead> 
     <tr> 
     <th class="spacer_100 align_ctr tooltip_trigger"> 
     Change Status <input type="checkbox" name="sample" onclick="selectAll()"> 
     </th> 
     </tr> 
     </thead> 
     <tbody> 

      <?php foreach ($users as $user) { ?> 
      <tr> 
      <td class="align_ctr" style="text-align: center"> 
      <input type="checkbox" name="current_status[]" value="1"/> 
      </td> 
      </tr> 
      <?php } ?> 
     </tbody> 
    </table> 

下面是javascript代码:

function selectAll() { 
     var checkboxes = document.getElementsByTagName("input"); 
     for(var i=1; i<checkboxes.length;i++) { 
     if (checkboxes[i].type == 'checkbox') { 
     checkboxes[i].checked = 'true'; 
     } 
     } 
    } 

我不知道什么是错的这个代码,我不能够选择复选框。

感谢

+0

[我的作品。(http://jsfiddle.net/bG3mm/) – icktoofay

+0

顺便说一下,这里是你的foreach结束标记'<?php endforeach; ?>'? – Raymond

+0

我在我的实际代码中有foreach的括号,我只是把它放在上面的代码中,但我仍然不确定为什么所有的复选框都没有选择。 – user2651516

回答

0

它工作正常,但您的代码:

var checkboxes = document.getElementsByTagName("input"); 

选择主复选框为好,尽量做:

var checkboxes = document.getElementsByTagName("input"); 
for(var i=0; i<checkboxes.length;i++) { //start from 0 
    if (checkboxes[i].type == 'checkbox' && checkboxes[i].name == 'current_status[]') { 
     checkboxes[i].checked = 'true'; 
    } 
} 
+0

感谢您的评论,但仍然不工作:( – user2651516

0

如何试试这个代码?

更改为

Change Status <input type="checkbox" name="sample" onclick="selectAll(this)"> 

和下面的函数

function SelectAll(CheckBoxControl){ 
    var i; 
    for (i=0; i < document.forms[0].elements.length; i++){ 
     if ((document.forms[0].elements[i].type == 'checkbox') && 
     (document.forms[0].elements[i].name.indexOf('current_status[]') > -1)){ 
     document.forms[0].elements[i].checked = CheckBoxControl.checked; 
     } 
    } 
} 
+0

不,我在javascript函数中使用断点检查,它正在调用每一件事,但仍然没有看到复选框被选中。是否有可能选择复选框,但只是它没有显示那里选择,因为运行后,我需要点击两次这些复选框,使其选择。 – user2651516

+0

对不起,我不明白你想做什么.. – Raymond