Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   appendChild не добавляет тот же элемент повторно (https://javascript.ru/forum/misc/57516-appendchild-ne-dobavlyaet-tot-zhe-ehlement-povtorno.html)

EmperioAf 06.08.2015 22:19

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

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


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


Правильный ответ 1. И действительно хром не добавляет тот же самый элемент повторно. Почему так?

Palama 06.08.2015 22:32

appendChild не добавляет, а перемещает элемент.
https://developer.mozilla.org/ru/doc...de/appendChild

рони 06.08.2015 23:36

Цитата:

Сообщение от EmperioAf
хром не добавляет тот же самый элемент повторно

интересно как это можно выяснить происходит второй appendChild или нет???
наверно да или есть какая то оптимизация если элемент на уже месте.

EmperioAf 07.08.2015 11:02

Цитата:

Сообщение от рони (Сообщение 383028)
интересно как это можно выяснить происходит второй appendChild или нет???
наверно да или есть какая то оптимизация если элемент на уже месте.

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

рони 07.08.2015 13:08

Цитата:

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

не понял ... вроде клонирование есть и причём тут мой вопрос?

EmperioAf 07.08.2015 13:12

Цитата:

Сообщение от рони (Сообщение 383070)
не понял ... вроде клонирование есть и причём тут мой вопрос?

я не знаю ответа на твой вопрос. Я просто так часто использовал appendChild на своём сайте. А вот о cloneNode я только читал

ksa 07.08.2015 13:22

Цитата:

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

Весь вопрос только в том, что это за элементы такие?
В твоем случае это один и тот же элемент. :D

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


Часовой пояс GMT +3, время: 05:34.