Узел: метод appendChild()
Базовая Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Метод appendChild() интерфейса Node добавляет узел в конец списка дочерних узлов указанного родительского узла.
Примечание: Если заданный дочерний узел — ссылка на существующий узел в документе, appendChild() перемещает его из текущего положения в новое.
Если заданный дочерний узел — DocumentFragment, всё содержимое DocumentFragment перемещается в список дочерних узлов указанного родительского узла.
appendChild() возвращает добавленный узел или, если дочерний узел — DocumentFragment, — очищенный фрагмент.
Примечание: В отличие от этого метода, метод Element.append() поддерживает несколько аргументов и добавление строк. Его можно предпочесть, если ваш узел является элементом.
Синтаксис
appendChild(aChild)
Параметры
aChild-
Узел для добавления к указанному родительскому узлу (обычно элемент).
Возвращаемое значение
Node, который является добавленным дочерним узлом (aChild), за исключением случаев, когда aChild является DocumentFragment, в этом случае возвращается пустой DocumentFragment.
Исключения
-
HierarchyRequestErrorDOMException -
Выбрасывается, когда нарушаются ограничения структуры DOM, то есть, если выполняется одно из следующих условий:
- Если родитель
aChildне являетсяDocument,DocumentFragmentилиElement. - Если добавление
aChildприведет к циклу, то есть, еслиaChildявляется предком узла. - Если
aChildне являетсяDocumentFragment,DocumentType,ElementилиCharacterData. - Если текущий узел —
Text, а его родитель —Document. - Если текущий узел —
DocumentType, а его родитель — неDocument, так как документ должен всегда быть непосредственным потомком документа. - Если родитель узла —
Document, иaChild—DocumentFragmentс более чем однимElementдочерним узлом или содержащимTextдочерний узел. - Если добавление
aChildприведет кDocumentс более чем однимElementкак дочерним узлом.
- Если родитель
Описание
Если заданный дочерний узел — ссылка на существующий узел в документе, appendChild() перемещает его из текущего положения в новое — нет необходимости удалять узел из родительского узла перед добавлением его к другому узлу. Это означает, что узел не может находиться одновременно в двух частях документа. Для создания копии узла перед добавлением его в новый родительский узел можно использовать метод Node.cloneNode(). Копии, созданные с помощью cloneNode , не синхронизируются автоматически.
appendChild() возвращает добавленный узел, а не родительский узел. Это означает, что вы можете добавить новый узел сразу после его создания, не теряя ссылку на него:
const paragraph = document.body.appendChild(document.createElement("p"));
// You can append more elements to the paragraph later
С другой стороны, вы не можете использовать appendChild() в стиле fluent API (как в jQuery).
// This doesn't append three paragraphs:
// the three elements will be nested instead of siblings
document.body
.appendChild(document.createElement("p"))
.appendChild(document.createElement("p"))
.appendChild(document.createElement("p"));
Пример
Добавление абзаца в тело
// Create a new paragraph element, and append it to the end of the document body
const p = document.createElement("p");
document.body.appendChild(p);
Создание вложенной структуры DOM
В этом примере мы пытаемся создать вложенную структуру DOM с минимальным количеством временных переменных.
const fragment = document.createDocumentFragment();
const li = fragment
.appendChild(document.createElement("section"))
.appendChild(document.createElement("ul"))
.appendChild(document.createElement("li"));
li.textContent = "hello world";
document.body.appendChild(fragment);
Это генерирует следующую структуру DOM:
<section>
<ul>
<li>hello world</li>
</ul>
</section>
Спецификации
| Спецификация |
|---|
| DOM # dom-node-appendchild |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
appendChild |
1 | 12 | 1 | 7 | 1.1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild