在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;
}
}
我看到你的代码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)
获取元素。
非常感谢你和Atul。我真的应该考虑选择表格ID。感谢您引起我的注意。现在一切正常!很好的学习体验! – Millica
@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只是作为一个例子,你应该使用合适的值按照您的方案
JavaScript在哪里? – Phiter
@PhiterFernandes哦,我的天啊!我忘了!我只是用js代码更新了这个问题。谢谢你提醒我!! – Millica
你用jQuery感觉舒服吗?实现你想要的更容易。 – Phiter