DOM
Манипулирование элементами
Поиск…
Клонирование элементов
Элемент может быть клонирован путем вызова метода cloneNode . Если первым параметром, переданным в cloneNode является true , дети оригинала также будут клонированы.
var original = document.getElementsByTagName("li")[0];
var clone = original.cloneNode(true);
Добавление элемента
В этом примере мы создаем новый элемент списка с текстом «новый текст» и выбираем первый неупорядоченный список и его первый элемент списка.
let newElement = document.createElement("li");
newElement.innerHTML = "new text";
let parentElement = document.querySelector("ul");
let nextSibling = parentElement.querySelector("li");
При вставке элемента мы делаем это под родительским элементом и непосредственно перед определенным дочерним элементом этого родительского элемента.
parentElement.insertBefore(newElement, nextSibling);
Новый элемент вставлен под
parentElementи непосредственно передnextSibling.
Когда нужно вставить элемент в качестве последнего дочернего элемента parentElement , второй аргумент может быть null .
parentElement.insertBefore(newElement, null);
Новый элемент вставлен под
parentElementв качестве последнего дочернего элемента.
Вместо этого appendChild() может использоваться для простого добавления дочернего элемента к дочерним элементам родительского узла.
parentElement.appendChild(newElement);
Новый элемент вставлен под
parentElementв качестве последнего дочернего элемента.
Замена элемента
В этом примере мы создаем новый элемент списка с текстом «новый текст» и выбираем первый неупорядоченный список и его первый элемент списка.
let newElement = document.createElement("li");
newElement.innerHTML = "new text";
let parentElement = document.querySelector("ul");
let nextSibling = parentElement.querySelector("li");
Чтобы заменить элемент, мы используем replaceChild :
parentElement.replaceChild(newElement, nextSibling);
nextSiblingудаляется из DOM. На его месте теперь находитсяnewElement.
Удаление элемента
Элемент можно удалить, вызвав remove() на нем. В качестве альтернативы можно вызвать removeChild() для своего родителя. removeChild() имеет лучшую поддержку браузера, чем remove() .
element.remove();
elementи все его дочерние элементы удаляются из DOM.
parentElement.removeChild(element);
elementи все его дочерние элементы удаляются из DOM.
В любом случае можно вставить этот узел в DOM в более поздний момент времени, пока есть еще ссылки на этот узел.
Применить и Подготовить методы
JavaScript теперь имеет методы Append и Prepend, которые присутствовали в jQuery
Основным преимуществом append и prepend является отличие от appendChild и insertBefore , он может принимать любое количество аргументов либо элемента HTML, либо обычного текста (который будет преобразован в текстовые узлы).
Чтобы добавить 1 div, 1 текстовый узел и 1 span
document.body.append(document.createElement('div'),"Hello world",document.createElement('span'))
Это изменит страницу на следующую структуру
<body>
.....(other elements)
<div></div>
"Hello World"
<span></span>
</body>
Чтобы добавить то же самое в теле
использование
document.body.prepend(document.createElement('div'),"Hello world",document.createElement('span'))
Это изменит страницу на следующую структуру
<body>
<div></div>
"Hello World"
<span></span>
.....(other elements)
</body>
Обратите внимание, что поддержка браузера
Chrome 54+
Firefox 49+
Opera 39+
Читать дальше в MDN