Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2014, 22:38
Новичок на форуме
Отправить личное сообщение для a798129 Посмотреть профиль Найти все сообщения от a798129
 
Регистрация: 02.04.2014
Сообщений: 2

Проблема с 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, 02.04.2014 в 22:43.
Ответить с цитированием
  #2 (permalink)  
Старый 02.04.2014, 22:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,127

a798129,
удаляйте с последнего либо кешируйте в массив предварительно - или как у вас удалять пока есть нулевой. потому что выборка "живая" отслеживает все изменения в DOM
Ответить с цитированием
  #3 (permalink)  
Старый 02.04.2014, 22:55
Новичок на форуме
Отправить личное сообщение для a798129 Посмотреть профиль Найти все сообщения от a798129
 
Регистрация: 02.04.2014
Сообщений: 2

Понятно, спасибо. Действительно оказалось что все getElementsBy возвращают живые выборки. (Я просто в getElementsById не изменял количество nodes) Всем большое спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 02.04.2014, 23:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от a798129
getElementsByClassName
Не поддерживается в IE8 кстати. Можешь убить двух зайцев, заменив на querySelectorAll('.class')
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47