(Вижте актуализацията в края на отговора.)
Можете да получите 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