Перебор родных свойств объекта

137
20 ноября 2019, 06:00

Привет. Не подскажите, как перебрать родные свойства объекта?

На странице есть несколько элементов с неким классом(пусть будет .my-class) и со всеми ними нужно произвести некие операции, например, удалить. Как это сделать? Без jQuery, разумеется.

Есть такой код:

nodes = document.querySelectorAll('.my-class');
for (var node in nodes) {
  if (nodes.hasOwnProperty(node)) {
    console.log(node, nodes[node]);
    nodes[node].parentNode.removeChild(nodes[node]);
  }
}

Но он перебирает не только сами элементы, но и свойство length, равное количеству найденных элементов.

Answer 1

Цикл for .. in .. не подходит для перебора массивов, так как перебирает свойства объекта.

Исправленый вариант:

for(var i = 0, node = nodes[i]; i < nodes.length; i++, node = nodes[i]) {
    node.style.backgroundColor = 'red';
}

Демо: http://jsfiddle.net/coder13/xUUf3/

Answer 2

Похоже это баг Хрома, но в вашем случае так и так for in не уместен, лучше:

for( var i = 0; i < nodes.length; i++ ) { ... }
// или обратный while
var i = nodes.length;
while( i-- ){ ... }
READ ALSO
Поменять DOM с помощью JavaScript [закрыт]

Поменять DOM с помощью JavaScript [закрыт]

Не могу, поменять DOM с помошью "getElementById" и "innerHTML"Можете помочь как правильно сделать

123
Как переделать javascript на обратное преобразование

Как переделать javascript на обратное преобразование

Есть локальный конвертер для преобразования файла m3u в enigma2Как сделать обратный конвертер для преобразования --- файла enigma2 в m3u ?

128
Фильтрация на сайте JS без jquery

Фильтрация на сайте JS без jquery

Задача: есть несколько h3, при вводе в input букв - начать выводить подходящие h3html-разметка

179