Проблема с getElementsByClassName
Здравствуйте!
Нужно найти все элементы на странице, у которых есть класс "cssClass" и удалить у них этот класс. По аналогии с getElementsByTagName, должно работать так:
var items = document.getElementsByClassName('cssClass');
for(var i=0; i< items.length; i++){
items[i].classList.remove('cssClass');
}
Однако, похоже на то, что после каждой итерации заново вычисляется переменная items, и соответственно, вызывается getElementsByClassName. Т.е. вот этот код решает поставленную задачу:
var items = document.getElementsByClassName('cssClass');
var len = items.length;
for(var i=0; i< len; i++){
items[0].classList.remove('cssClass');
}
Но хотелось бы узнать почему так. Объясните пожалуйста почему первый вариант не работает? |
a798129,
удаляйте с последнего либо кешируйте в массив предварительно - или как у вас удалять пока есть нулевой. потому что выборка "живая" отслеживает все изменения в DOM |
Понятно, спасибо. Действительно оказалось что все getElementsBy возвращают живые выборки. (Я просто в getElementsById не изменял количество nodes) Всем большое спасибо :)
|
Цитата:
|
| Часовой пояс GMT +3, время: 00:08. |