проверка флажков с именем и внутри div - PullRequest
1 голос
/ 16 июня 2011

Я пытаюсь написать некоторый 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 ]

1 голос
/ 16 июня 2011

Попробуйте 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 голосов
/ 16 июня 2011

Как правило, вы публикуете вопрос, а затем мгновенно находите свой ответ независимо от того, сколько времени вы искали раньше.Изменение дочерних узлов на 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;
        }
    }
}
0 голосов
/ 16 июня 2011

Это прекрасно работает для меня ( jsFiddle пример ).Любой шанс, что это ваш обработчик событий щелчка, использующий идентификатор вместо имени, запрашивающий дочерние узлы, когда они действительно являются потомками (например, <div><ul><li><input type="checkbox"></li></ul></div>), задающий status что-то кроме "checked", "", true или false (которые все работают хотя бы в Chrome)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...