(См. обновление в конце ответа.)
Вы можете получить NodeList
всех input
элементов через getElementsByTagName
(спецификация DOM, MDC, MSDN), затем просто прокрутите его:
var inputs, index;
inputs = document.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
// deal with inputs[index] element.
}
Там я использовал его на document
, который будет искать весь документ. Он также существует для отдельных элементов (спецификация DOM), что позволяет искать только их потомков, а не весь документ, например:
var container, inputs, index;
// Get the container element
container = document.getElementById('container');
// Find its child `input` elements
inputs = container.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
// deal with inputs[index] element.
}
... но вы сказали, что не хотите использовать родительский form
, поэтому первый пример более применим к вашему вопросу (второй просто для полноты, на случай, если кто-то еще найдет этот ответ). знать).
Обновление: getElementsByTagName
– это отличный способ сделать все вышеперечисленное, но что, если вы хотите сделать что-то более сложное, например просто найти все флажки вместо всех элементов input
?
Вот тут-то и появляется полезный querySelectorAll
: он позволяет нам получить список элементов, которые соответствуют любому селектору CSS, который нам нужен. Итак, для нашего примера флажков:
var checkboxes = document.querySelectorAll("input[type=checkbox]");
Вы также можете использовать его на уровне элемента. Например, если у нас есть элемент div
в нашей переменной element
, мы можем найти все span
с классом foo
, которые находятся внутри этого div
следующим образом:
var fooSpans = element.querySelectorAll("span.foo");
querySelectorAll
и его двоюродный брат querySelector
(который просто находит первый соответствующий элемент, а не дает вам список) поддерживаются всеми современными браузерами, а также IE8.
person
T.J. Crowder
schedule
06.02.2010
javascript
URL-адреса. Мое предложение для этого конкретного кода: оставьтеhref
там, где он есть, и вместо этого просто установитеls[i].onclick= function() { LoadExtern(this.href, 'ControlPanelContent', true, true); };
. - person bobince   schedule 06.02.2010