Привет. Не подскажите, как перебрать родные свойства объекта?
На странице есть несколько элементов с неким классом(пусть будет .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, равное количеству найденных элементов.
Цикл 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/
Похоже это баг Хрома, но в вашем случае так и так for in не уместен, лучше:
for( var i = 0; i < nodes.length; i++ ) { ... }
// или обратный while
var i = nodes.length;
while( i-- ){ ... }
Сборка персонального компьютера от Artline: умный выбор для современных пользователей