我正在尝试编写一些javascript,它将检查div中复选框名称与给定名称匹配的复选框。这就是我所拥有的,但它没有做任何事情:
function checkbox_control(container_id,element_name,status) {
var children = document.getElementById(container_id).childNodes;
alert(element_name);
for(var b=0; b < children.length; b++) {
if(children[b].name == element_name){
children[b].checked = status;
}
}
}
答案 0 :(得分:1)
尝试使用getElementsByTagName而不是childNodes(它会对元素进行递归搜索)。喜欢这个:
function checkbox_control(container_id,element_name,status) {
var checkboxes = document.getElementById(container_id).getElementsByTagName('input');
for(var b=0; b < checkboxes.length; b++) {
if(checkboxes[b].name == element_name){
checkboxes[b].checked = status;
}
}
}
答案 1 :(得分:0)
这适用于我(jsFiddle example)。任何机会它都是你的点击事件处理程序,使用ID而不是名称,当它们真的是后代节点时要求子节点(例如<div><ul><li><input type="checkbox"></li></ul></div>
),将status
设置为"checked"
以外的其他节点, ""
,true
或false
(至少在Chrome中都有效)?
答案 2 :(得分:0)
典型的,你发布问题,无论你以前看多久,你都会立即找到自己的答案。将子节点更改为getElementsByTagName('input'):
function checkbox_control(container_id,element_name,status) {
var children = document.getElementById(container_id).getElementsByTagName('input');
for(var b=0; b < children.length; b++) {
if(children[b].name == element_name){
children[b].checked = status;
}
}
}