Spec-Zone.ru › Web APIs

Узел: метод appendChild()

Базовая Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Метод appendChild() интерфейса Node добавляет узел в конец списка дочерних узлов указанного родительского узла.

Примечание: Если заданный дочерний узел — ссылка на существующий узел в документе, appendChild() перемещает его из текущего положения в новое.

Если заданный дочерний узел — DocumentFragment, всё содержимое DocumentFragment перемещается в список дочерних узлов указанного родительского узла.

appendChild() возвращает добавленный узел или, если дочерний узел — DocumentFragment, — очищенный фрагмент.

Примечание: В отличие от этого метода, метод Element.append() поддерживает несколько аргументов и добавление строк. Его можно предпочесть, если ваш узел является элементом.

Синтаксис

appendChild(aChild)

Параметры

aChild

Узел для добавления к указанному родительскому узлу (обычно элемент).

Возвращаемое значение

Node, который является добавленным дочерним узлом (aChild), за исключением случаев, когда aChild является DocumentFragment, в этом случае возвращается пустой DocumentFragment.

Исключения

HierarchyRequestError DOMException

Выбрасывается, когда нарушаются ограничения структуры 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

См. также

  • Node.removeChild()
  • Node.replaceChild()
  • Node.insertBefore()
  • Node.hasChildNodes()
  • Element.insertAdjacentElement()
  • Element.append()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API