Проблема с 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, время: 14:18. |