Javascript.RU

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

appendChild не добавляет тот же элемент повторно
Я частенько прохожу Тест знаний и мне непонятно вот это задание:

Сколько потомков будет у <div> после кода ниже?
<div id="div"></div>
<p id="p">Привет</p>
<script>
  div.appendChild(p);
  div.appendChild(p);
</script>


Варианты ответов:
0
1
2
В коде ошибка.


Правильный ответ 1. И действительно хром не добавляет тот же самый элемент повторно. Почему так?
Ответить с цитированием
  #2 (permalink)  
Старый 06.08.2015, 22:32
Интересующийся
Отправить личное сообщение для Palama Посмотреть профиль Найти все сообщения от Palama
 
Регистрация: 24.06.2015
Сообщений: 16

appendChild не добавляет, а перемещает элемент.
https://developer.mozilla.org/ru/doc...de/appendChild
Ответить с цитированием
  #3 (permalink)  
Старый 06.08.2015, 23:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от EmperioAf
хром не добавляет тот же самый элемент повторно
интересно как это можно выяснить происходит второй appendChild или нет???
наверно да или есть какая то оптимизация если элемент на уже месте.
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2015, 11:02
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от рони Посмотреть сообщение
интересно как это можно выяснить происходит второй appendChild или нет???
наверно да или есть какая то оптимизация если элемент на уже месте.
по-моему логично, что если мы хотим добавить N абсолютно одинаковых элементов, то можно добавлять их по одному в цикле.
Но увы, люди, разрабатывающие стандарты, думают иначе
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2015, 13:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от EmperioAf
N абсолютно одинаковых элементов, то можно добавлять их по одному в цикле.
Но увы, люди, разрабатывающие стандарты, думают иначе
не понял ... вроде клонирование есть и причём тут мой вопрос?
Ответить с цитированием
  #6 (permalink)  
Старый 07.08.2015, 13:12
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от рони Посмотреть сообщение
не понял ... вроде клонирование есть и причём тут мой вопрос?
я не знаю ответа на твой вопрос. Я просто так часто использовал appendChild на своём сайте. А вот о cloneNode я только читал
Ответить с цитированием
  #7 (permalink)  
Старый 07.08.2015, 13:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от EmperioAf
по-моему логично, что если мы хотим добавить N абсолютно одинаковых элементов, то можно добавлять их по одному в цикле.
Весь вопрос только в том, что это за элементы такие?
В твоем случае это один и тот же элемент.

Вот если бы ты его клонировал... Или создавал каждый раз новый элемент...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тот же элемент yyyyuriyyyy jQuery 1 19.09.2014 11:28
Drag-n-Drop - перетянуть элемент Jugo ExtJS 1 10.08.2011 19:10
IE8: appendChild добавляет лишнюю инфу YamaNeko Internet Explorer 1 29.07.2011 15:23