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