Для моего проекта мне нужно получить коллекцию всех элементов одного класса. Итак, я делаю это с getElementsByClassName
.
var tabs = document.getElementsByClassName("tab");
if (tabs) {
for (var i = 0; i < tabs.length; i++) {
var tab = tabs[i];
console.log(tab); // which outputs as 'undefined'..
console.log(i); // which outputs the nos of the total nodes available with class 'tab'
}
}
Я должен получить все эти элементы (у которых есть класс «вкладка») и применить его к другому классу (скажем, «летучая мышь»).
Мой вопрос в том, почему он утешает undefined, как указано выше?? и как я могу последовательно перебирать все необходимые узлы. Есть ли какой-нибудь код, который может это сделать??
ИЗМЕНИТЬ ::
Забудь добавить..
При нажатии на любую вкладку с классом 'tabs'
она всегда возвращает один и тот же результат.
var tabs = document.getElementsByClassName("tab");
if (tabs) {
for (var i = 0; i < tabs.length; i++) {
var tab = tabs[i];
tab.addEventListener("click", function() {
console.log(tab[i]); // always returns undefined
console.log(tab); // always returns the last element in the list
console.log(i); // always returns the length of that list (in my case its 3)
}, false);
}
}
Как я могу последовательно перебирать все доступные элементы.
tab[i]
определенно опечатка вместоtabs[i]
. Кроме того, взгляните на добавление прослушивателей событий click в цикле для узнайте о замыканиях и о том, как они доставляют вам проблемы. - person Paul Roub   schedule 30.12.2015