Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2014, 11:04
Новичок на форуме
Отправить личное сообщение для bdoxhobehue Посмотреть профиль Найти все сообщения от bdoxhobehue
 
Регистрация: 09.01.2014
Сообщений: 5

Замена элементов в массиве
Добрый день,

Не могу понять почему не происходит замены элементов код ниже:

var elements=document.body.querySelectorAll('ul>li>ul');
for (var i=0;i<elements.length;i++){
     elements[i]=elements[i].parentNode;
}



Заранее спасибо, за ответ
Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2014, 11:14
Аватар для zOdmin
Аспирант
Отправить личное сообщение для zOdmin Посмотреть профиль Найти все сообщения от zOdmin
 
Регистрация: 05.03.2012
Сообщений: 62

Видимо, вы создаете массив, в который не копируете реальные объекты, а всего лишь заполняете его ссылками на них. Далее заменяете эти "ссылки на объекты" на "ссылки на родителей объектов". Массив меняется, а страница остается неизменной.
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2014, 11:16
Аватар для zOdmin
Аспирант
Отправить личное сообщение для zOdmin Посмотреть профиль Найти все сообщения от zOdmin
 
Регистрация: 05.03.2012
Сообщений: 62

Вам нужно применять методы removeChild и appendChild.
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2014, 11:27
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Результат 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>


Еще совет - делай отбивку операторов пробелами. Код внезапно становится во много раз читабельнее.
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2014, 11:34
Новичок на форуме
Отправить личное сообщение для bdoxhobehue Посмотреть профиль Найти все сообщения от bdoxhobehue
 
Регистрация: 09.01.2014
Сообщений: 5

Сообщение от zOdmin Посмотреть сообщение
... Далее заменяете эти "ссылки на объекты" на "ссылки на родителей объектов". Массив меняется, а страница остается неизменной.
В том то и дело массив не меняется, пока никаких видоизменений я на странице не делаю, просто хочу поменять каждый элемент массива на его родительский элемент.
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2014, 11:35
Новичок на форуме
Отправить личное сообщение для bdoxhobehue Посмотреть профиль Найти все сообщения от bdoxhobehue
 
Регистрация: 09.01.2014
Сообщений: 5

Сообщение от Erolast Посмотреть сообщение
Результат 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>


Еще совет - делай отбивку операторов пробелами. Код внезапно становится во много раз читабельнее.


Большое спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена элементов массива элементами массива prostoix Javascript под браузер 4 24.10.2013 17:36
Вывод случайных элементов из массива в таблицу Narm0 Общие вопросы Javascript 10 06.08.2013 12:39
Замена DOM элемента другим элементом MaxXxaM Events/DOM/Window 5 04.05.2013 01:24
Уникальность элементов в массиве - как? .andreev Общие вопросы Javascript 2 14.11.2010 15:03
Как определить количество элементов в многомерном массиве Dima00782 Общие вопросы Javascript 3 12.06.2010 14:15