Node.appendChild()

appendChild()Node インターフェイスのメソッドで、指定された親ノードの子ノードリストの末尾にノードを追加します。追加しようとしたノードが既に存在していた場合は、 appendChild() はその子ノードを現在の位置から新しい位置へ移動します(他のノードに追加する前に、そのノードを親ノードから取り除く必要はありません)。

これは、 1 つのノードが同時に文書の 2 か所に存在できないということです。したがって、すでにノードに親がある場合、最初にノードが取り除かれた後、新しい位置に追加されます。 Node.cloneNode() メソッドを使用すると、新しい親ノード以下に追加する前に、ノードのコピーを作成することができます。 cloneNode で作成したコピーは自動的に同期されません。

指定された子ノードが DocumentFragment であった場合、その DocumentFragment の内容全体が指定された親ノードの子ノードリストに移動します。

メモ: このメソッドとは異なり、 Element.append() メソッドは複数の引数や文字列の追加に対応しています。ノードが要素であった場合は、こちらを使用することができます。

appendChild() は子要素を返すので、メソッドチェーンは動作しません。

let aBlock = document.createElement('block').appendChild( document.createElement('b') );

aBlock<b></b> を追加するだけですが、 block に対して複数の appendChild を連鎖させるなど、それ以外の操作を連鎖させることはできません。

構文

appendChild(aChild);

引数

aChild

指定された親ノードに追加するノード(ふつうは要素)。

返値

Node で追加された子ノード (aChild) を返します。 ただし、 aChildDocumentFragment であった場合は、空の DocumentFragment を返します。

例外

HierarchyRequestError DOMException

DOM ツリーの制約に違反した場合に発生します。すなわち、以下のいずれかが発生する場合です。

-aChild を挿入すると Document の子の Element が複数になる場合。

// 新しい段落要素を作成し、文書の body の末尾に追加します。
let p = document.createElement("p");
document.body.appendChild(p);

仕様書

Specification
DOM Standard
# dom-node-appendchild

ブラウザーの互換性

BCD tables only load in the browser

関連情報