JavaScript метод Element.insertAdjacentElement()
Определение и применение
JavaScript метод insertAdjacentElement() объекта
Element
позволяет вставить указанный узел элемента в заданную позицию относительно элемента, на котором он вызывается.
Схематичное отображение работы метода insertAdjacentElement() отображено на следующем изображении:
Поддержка браузерами
Спецификация: dom.spec.whatwg
Поддерживается во всех основных браузерах с 2018 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
insertAdjacentElement | 1 | 17 Версия 17 выпущена в 2018 г. Версия 12 выпущена в 2015 г. — Удалено в 17; Частичная поддержка Примечание MDN (англ.) Only supported for | 48 | 8 | 3 | 18 | 48 | 10.1 | 1 | 1.0 | 4.4 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
const insertedElement = targetElement.insertAdjacentElement(position, element);
Спецификация
Значения параметров
| Параметр | Описание |
|---|---|
position |
Строковое значение, представляющее позицию относительно целевого элемента. Возможные значения:
"beforebegin" и "afterend" нужен родительский узел, но подключение к
документу не требуется: родителем может быть DocumentFragment.
Является обязательным параметром.
|
element |
Элемент, вставляемый в дерево DOM. Обязательный параметр. |
Метод возвращает вставленный элемент или null, если вставка не выполнена (например, при позиции
"beforebegin" у элемента без родителя).
Исключения
| Тип исключения | Описание |
|---|---|
SyntaxError |
Возникает в том случае, если указанная позиция не является возможным значением. |
TypeError |
Возникает в том случае, если указанный элемент не является допустимым элементом. |
Пример использования
Перемещение одного элемента в начало и конец списка
Нажмите , затем кнопки в результате: элемент My element появляется в начале или в конце списка. Он перемещается, а не копируется, потому что вставляется один и тот же созданный узел.
index.html
<button data-migration-click-0="">Insert with afterbegin position</button>
<button data-migration-click-2="">Insert with beforeend position</button>
<ul>
<li>Элемент списка</li>
</ul>
main.js
const ul = document.querySelector('ul')
let li = document.createElement('li')
const textNode = document.createTextNode('My element')
li.appendChild(textNode)
function insertAfterBegin() {
ul.insertAdjacentElement('afterbegin', li)
}
function insertBeforeEnd() {
ul.insertAdjacentElement('beforeend', li)
}
// Обработчики кнопок перенесены из HTML для запуска с CSP без inline-скриптов.
document.querySelector('[data-migration-click-0]').addEventListener('click', function () {
insertAfterBegin()
})
document.querySelector('[data-migration-click-0]').removeAttribute('data-migration-click-0')
document.querySelector('[data-migration-click-2]').addEventListener('click', function () {
insertBeforeEnd()
})
document.querySelector('[data-migration-click-2]').removeAttribute('data-migration-click-2')
Нажмите , чтобы запустить пример.
В этом примере с использованием метода
addEventListener()
при нажатии на определенную кнопку (HTML элемент
<button>) мы вызываем функцию, которая с помощью метода insertAdjacentElement() вставляет элемент
<li>
внутри элемента
<ul>
перед его первым дочерним элементом, или после его последнего дочернего элемента.
Обратите внимание, что мы предварительно с использованием метода
querySelector()
выбираем первый элемент
<ul>
в документе и инициализируем этим значением переменную. После этого с использованием метода
createElement()
создаем новый элемент (пустой узел
Element) с указанным именем тега
<li>, с использованием метода
createTextNode()
создаем текстовый узел с указанным текстом и с использованием метода
appendChild()
помещаем его в этот элемент.