@olya_097

Почему тут ответ 1, по идее правильный ответ 2?

5ba7fe24c3001745028032.png
  • Вопрос задан
  • 349 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
Правильный ответ действительно 1.
div.appendChild(p) как-бы говорит браузеру:
Возьми элемент p и помести его в конец div'а.
И потом еще раз- то-же самое:
Возьми элемент p и помести его в конец div'а.

При этом оба раза берется один и тот-же элемент p, и во второй раз он будет помещен туда-же, откуда его взяли. Вот демка, где видно как p перемещается внутрь div, в div добавляется еще один элемент, а затем снова идет команда
div.appendChild(p), и видно как p перемещается в конец.


Никакой второй p не появится, для клонирования отдельные методы есть.
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Один, потому что когда мы делаем appendChild какого-нибудь уже существующего элемента в дереве DOM, то этот элемент исчезает из предыдущего узла (происходит перемещение, а не копирование).
В итоге первый раз элемент с id="p" (потому как если обратиться к необъявленной переменной в режиме без "use strict" - он сперва проверит наличие нужного поля в объекте window, а если обратиться к неизвестному полю объекта window - он вернёт элемент с таким id, если он есть) будет помещён внутрь элемента с id="div". Второй раз - этот элемент будет снова туда помещён, но из старого места он будет убран - то есть, из элемента div снова переместится в конец его же.
Вот наглядный пример с пятью кнопками: https://codepen.io/anon/pen/eLooRm (при нажатии на кнопку - она перемещается вниз, при этом никакого копирования не происходит, просто перенос)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
solotony
@solotony
покоряю пик Балмера
потому что appendChild переносит элемент внутрь дочернего в конец списка чайлдов.

поэтому второй appendChild ничего не сделает
Ответ написан
Да, совершенно верно, ошибка, два потока будет, потому что скрипт добавляет к див два p тега, а они являются потомками, раз их два, то соответственно их будет столько же .
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ни одного, потому что переменные div и p не определены.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы