Замена элементов в массиве
Добрый день,
Не могу понять почему не происходит замены элементов код ниже:
var elements=document.body.querySelectorAll('ul>li>ul');
for (var i=0;i<elements.length;i++){
elements[i]=elements[i].parentNode;
}
Заранее спасибо, за ответ |
Видимо, вы создаете массив, в который не копируете реальные объекты, а всего лишь заполняете его ссылками на них. Далее заменяете эти "ссылки на объекты" на "ссылки на родителей объектов". Массив меняется, а страница остается неизменной.
|
Вам нужно применять методы removeChild и appendChild.
|
Результат querySelectorAll - ссылка не на массив, а на массивоподобный объект, и свойства этого объекта защищены от перезаписи, потому ничего и не работает. Нет, с помощью определенных манипуляций, конечно, для записи открыть свойства можно, но лучше не идти против языка) Создай отдельный массив, и в него заноси.
<div><span></span></div>
<div><span></span></div>
<div><span></span></div>
<script>
var elements = document.body.querySelectorAll('span');
console.log(elements);
var parent_elements = [];
for (var i = 0; i < elements.length; i++) {
parent_elements[i] = elements[i].parentNode;
}
console.log(parent_elements);
</script>
Еще совет - делай отбивку операторов пробелами. Код внезапно становится во много раз читабельнее. |
Цитата:
|
Цитата:
Большое спасибо |
| Часовой пояс GMT +3, время: 15:10. |