Javascript.RU

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

Обход NodeList
var listEl = document.getElementsByClassName("selectLabel"), i, 
    rgxp = /\s{1}selectLabel/;

console.log(listEl.length);

for (i = 0; i < listEl.length; i++){
    console.log(i+" "+listEl[i].className);
    listEl[i].className = listEl[i].className.replace(rgxp, "");
    console.log(i+" "+listEl[i].className);
}


listEl.length меняет динамически значение. Как поступить? Отказаться от getElementsByClassName?
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2014, 23:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

rekzi,
либо обходить NodeList с конца либо сделать настоящий массив из NodeList либо перезаписывать всегда только нулевой пока он есть

Последний раз редактировалось рони, 19.01.2014 в 23:43.
Ответить с цитированием
  #3 (permalink)  
Старый 20.01.2014, 04:56
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от rekzi
Отказаться от getElementsByClassName?
Хороший вариант, тем более что этот метод не поддерживается в IE8, в отличие от document.querySelectorAll('.class')

Но если все же понадится приведение к массиву, то:
var nodeList = document.getElementsByTagName('div');
var array = Array.apply(null, nodeList);
// или array = Array.prototype.slice.call(nodeList)


Еще рекомендую использовать element.classList.(add|remove|contains|toggle), с костылем для старых браузеров (легко гуглится classList polyfill)
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обход элементов localStorage berserk10 Events/DOM/Window 8 11.08.2013 14:55
Как сделать обход элементов внутри DIV reno4 jQuery 4 24.07.2013 13:30
Зачем у NodeList и HTMLCollection свойство length enumerable? danik.js Общие вопросы Javascript 5 27.03.2013 11:02
Обход массива: "сильный" return Regardless Общие вопросы Javascript 3 29.08.2012 16:38
Обход массива в строгом порядке nibble Общие вопросы Javascript 35 03.12.2010 13:38