2011-06-16 36 views
1

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

回答

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; 
     } 
    } 
} 
+0

我会给你这个功劳。 – David 2011-06-16 09:36:09

0

这对我很好(jsFiddle example)。任何机会,这是您的单击事件处理程序,使用ID而不是名称,要求子节点的时候是他们真正的后代节点(例如),从"checked"设置status的东西不谈,""truefalse(所有工作至少铬)?

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; 
     } 
    } 
} 
相关问题