在PHP表格上切换复选框

问题描述:

我有一个在表头中有一个复选框的表格,它将用来切换下面的所有复选框。我在标题中的复选框中添加了JavaScript函数,但到目前为止,它只选择顶部复选框(一个复选框)而不是全部复选框。任何关于我做错了什么或研究什么的建议或建议?在PHP表格上切换复选框

HTML表格标题代码:

<thead> 
    <tr> 
    <th><center><input type="checkbox" value="" id="cbgroup1_master" onchange="togglecheckboxes(this,'cbgroup1')"></center></th> 
    <th>Sender</th> 
    <th>Receiver</th> 
    <th>Subject</th> 
    <th>Date</th> 
    </tr> 
</thead> 

PHP表的代码:

$table .= ' 
      <tr> 
      <td><center><input type="checkbox" id="cb1_1" class="cbgroup1"></center></td> 
      <td><a href="pm_message.php?u='.$log_username.'&pmid='.$pmid.'" onclick="markRead(\''.$pmid.'\',\''.$sender.'\')">'.$sender.'</a></td> 
      <td>'.$receiver.'</td> 
      <td>'.$subject.'</td> 
      <td>'.$time.'</td> 
      </tr>'; 

Javascript代码:

function togglecheckboxes(master,cn){ 
    var cbarray = document.getElementsByClassName(cn); 
    for(var i = 0; i < cbarray.length; i++){ 
     var cb = document.getElementById(cbarray[i].id); 
     cb.checked = master.checked; 
    } 
} 
+0

JavaScript在哪里? – Phiter

+0

@PhiterFernandes哦,我的天啊!我忘了!我只是用js代码更新了这个问题。谢谢你提醒我!! – Millica

+0

你用jQuery感觉舒服吗?实现你想要的更容易。 – Phiter

我看到你的代码2点的问题。

使用多个DOM元素

你的PHP代码暗示你可能正在使用一个循环来创建的复选框,但使用的是同一个ID为所有这些“cb1_1”相同的ID(大概) 。 与@atul相同。

选择不正确的复选框元素 由于您使用的所有输入同一个ID, var cb = document.getElementById(cbarray[i].id);总是返回相同的元素。解决这个问题的方法是使用由@atul提供的解决方案

另一种方式是重写你的JavaScript如下:

function togglecheckboxes(master,cn){ 
    var cbarray = document.getElementsByClassName(cn); 
    for(var i = 0; i < cbarray.length; i++){ 
     var cb = cbarray[i]; 
     cb.checked = master.checked; 
    } 
} 

你cbarray已经是你的复选框数组,所以它是多余的( aka无用)在cbarray[i]已经拥有它时,请致电document.getElementById(cbarray[i].id)获取元素。

+0

非常感谢你和Atul。我真的应该考虑选择表格ID。感谢您引起我的注意。现在一切正常!很好的学习体验! – Millica

+0

@Millica很高兴为您服务。祝你在编程旅程中幸运! – Giorgiolino

问题是在设置相同的ID(cb1_1)到所有的复选框(这在HTML中是无效的)ID应该是唯一的这一页。因此,它只选择第一个找到的复选框并放弃其余部分。为了解决这个问题,给复选框赋予唯一的ID。

$table .= ' 
      <tr> 
      <td><center><input type="checkbox" id="cb1_'.$pmid.'" class="cbgroup1"></center></td> 
      <td><a href="pm_message.php?u='.$log_username.'&pmid='.$pmid.'" onclick="markRead(\''.$pmid.'\',\''.$sender.'\')">'.$sender.'</a></td> 
      <td>'.$receiver.'</td> 
      <td>'.$subject.'</td> 
      <td>'.$time.'</td> 
      </tr>'; 

注:我只是用$ PMID只是作为一个例子,你应该使用合适的值按照您的方案