На прошлом уроке мы научились выбирать элементы и менять их содержимое. Теперь — создание и удаление: JavaScript может создавать новые элементы, добавлять их на страницу и удалять. Это нужно для динамических списков, уведомлений, модальных окон.
createElement.append, prepend, before, after, insertBefore.remove().createElement, append, removeЧтобы добавить на страницу новый блок, его нужно сначала создать как DOM-элемент, затем вставить в дерево. document.createElement("тег") создаёт элемент в памяти; он появится на странице только после того, как его добавят к существующему узлу (например, в body или в выбранный контейнер).
const div = document.createElement("div");
div.textContent = "Новый блок";
document.body.append(div);
elem.remove();createElement("div") создаёт пустой элемент <div>.textContent задаёт текстовое содержимое (теги не интерпретируются — в отличие от innerHTML).append(узел) добавляет узел в конец списка детей родителя. У одного родителя можно вызвать append(узел1, узел2) — добавятся оба.prepend(узел) вставляет в начало списка детей.elem.remove() удаляет элемент из DOM (со страницы). Переменная elem по-прежнему хранит ссылку на этот узел, но на странице его уже нет.Списки в HTML строятся из <ul> или <ol> и элементов <li>. В JS создаём каждый <li> через createElement("li"), задаём текст и добавляем в список через append.
const ul = document.querySelector("ul");
const li = document.createElement("li");
li.textContent = "Новый пункт";
ul.append(li);Часто пункты списка берут из массива данных. Перебираем массив и для каждого значения создаём li, добавляем в ul:
const items = ["Яблоко", "Груша", "Слива"];
const ul = document.querySelector("ul");
for (const text of items) {
const li = document.createElement("li");
li.textContent = text;
ul.append(li);
В результате на странице появится список из трёх пунктов. Если вызывать этот код повторно без очистки ul, пункты продублируются — перед заполнением можно очистить контейнер: ul.innerHTML = "" или ul.replaceChildren().
insertBefore, before, afterКогда нужно вставить элемент не в начало и не в конец, а перед или после другого узла, используют методы вставки относительно «соседа»:
parent.insertBefore(newNode, referenceNode);
elem.before(newElem);
elem.after(newElem);parent.insertBefore(newNode, referenceNode) — вставляет newNode в родителя parent перед узлом referenceNode. Если referenceNode равен null, узел добавляется в конец (как append).elem.before(newElem) — вставляет newElem перед elem (тот же родитель).elem.after(newElem) — вставляет после elem.Это полезно, когда нужно вставить новую строку в таблицу, новый пункт между существующими или блок между двумя div.
Мы научились создавать элементы и управлять структурой DOM. На следующем уроке — практика, затем проект «Веб-квиз».
appendChild вместо append — оба работают, но append может принимать несколько аргументов.remove() удаляет элемент из DOM, но переменная ещё будет хранит ссылку.append добавляет в конец, prepend — в начало.Кнопка «Добавить пункт». По клику в список добавляется новый пункт с текстом «Пункт N» (N — номер).
Страница с пустым div. Спроси имя через prompt и создай элемент с приветствием. Добавь его в div.
Список из 5 пунктов. У каждого — кнопка «Удалить». По клику удаляется соответствующий пункт.
Поле ввода и кнопка. Вводишь текст — по клику создаётся карточка (div с текстом). Несколько карточек под полем.
Список дел: поле + кнопка «Добавить». Новое дело — в список. У каждого дела — чекбокс. При отметке — зачёркивание (класс или style).