обработка многомерного HTML-массива в Javascript - PullRequest
2 голосов
/ 15 июля 2010

У меня есть следующий HTML-код, зацикленный на языке шаблонов Smarty:

<td><input type="checkbox" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][confirm]" /></td>
<td><input type="hidden" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][ipInt]" value="{$relatedIP.ipInt}">{$relatedIP.robotIP}</td>
<td><input type="hidden" name="confirmRelated[{$relatedIP.ipInt}_{$relatedIP.patternID}][patternID]" value="{$relatedIP.patternID}">{$relatedIP.pattern}</td>

Я пытаюсь получить доступ к полям в JavaScript, но у меня возникают проблемы даже с основамидо сих пор.Кто-нибудь может помочь?

var boxes = document.getElementsByName('confirmRelated');
alert(boxes.length);

Это возвращает 0 в данный момент, что, очевидно, неправильно.Я пытаюсь просмотреть все из них и установить флажок «подтвердить».

Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 15 июля 2010

Вы не можете получить к ним доступ через document.getElementByName(). Должно работать следующее:

var boxes = document.getElementsByTagName('input');
for(i = 0; i < boxes.length; i++){
    if(boxes[i].name == 'confirmRelated' && boxes[i].type == 'checkbox'){
        boxes[i].checked = 'checked';
    }
}

Это проверяет все входные данные с помощью флажка типа.

РЕДАКТИРОВАТЬ : Используя такую ​​среду, как прототип, вы можете сделать это намного проще:

$$('input[name=^"confirmRelated"]').each(function(elm){
    if(elm.type == 'checkbox') elm.checked = 'checked';
});
1 голос
/ 15 июля 2010

Возвращает 0 в данный момент, что явно неверно.

Нет, это не так.нет элемента с «verifyRelated» в качестве имени.

для циклического прохождения через ваш «массив» (javascript не замечает это как массив), вы должны пройти через все поля ввода (getElementsByTagName ('input') ...) и проверьте, начинается ли имя вашего текущего элемента с «verifyRelated» (и если это так, делайте все, что вы хотите сделать).

0 голосов
/ 15 июля 2010

Вы можете использовать JQuery selector-

$("input[name^='confirmRelated']")

, поскольку все входные имена начинаются с 'verifyRelated' и механизм шаблонов добавляет к нему некоторый постфикс

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