@Gary_Ihar

Почему игнорируется .append(elem)?

Нахожу два дива с className = user1 и user2:

const windowChatUser1 = document.querySelector(".user1"),
  windowChatUser2 = document.querySelector(".user2");


И пытаюсь в каждый добавить тег Р с текстом:
function render(message) {
  const p = document.createElement("p");
  p.textContent = message;
  windowChatUser1.append(p);
  windowChatUser2.append(p);
}


В таком случае срабатывает только "последний" аппенд и игнорируется предыдущий. Подскажите, почему так происходит?
  • Вопрос задан
  • 57 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Не игнорируется.

Встречный вопрос - как один элемент может находиться сразу в двух местах? Нет-нет, можете не отвечать. Очевидно же, что никак. Чтобы добавлять одинаковые элементы в разные места, делайте копии.
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Бородатый программер
function render(message) {
  const p = document.createElement("p"); // создали p, его еще нигде нет в DOM, все ok
  p.textContent = message;
  windowChatUser1.append(p); // поместили наш p в windowChatUser1, с этого момента он есть в DOM
  windowChatUser2.append(p); // переместили наш p в windowChatUser2
}
логично, что из windowChatUser1 наш p исчез при перемещении в windowChatUser2, так как один элемент не может быть в двух родителях сразу
Делайте глубокий клон при втором добавлении:windowChatUser2.append(p.cloneNode(true));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
21 окт. 2020, в 22:40
300 руб./за проект
21 окт. 2020, в 22:34
25000 руб./за проект
21 окт. 2020, в 21:24
7000 руб./за проект