检查名称和div内的复选框

时间:2011-06-16 09:22:05

标签: javascript html dom xhtml checkbox

我正在尝试编写一些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;
        }
    }
}

3 个答案:

答案 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"以外的其他节点, ""truefalse(至少在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;
        }
    }
}