DOM

Node.insertBefore() メソッド

 編集:2022.10.30 by T.A.

[Edge]。→

親ノード Node の、指定ノード2 の前に指定ノード1 を挿入します。

mdn: 参照先ノードの前にこの親ノードの子としてノードを挿入します。

mdn: 指定されたノードが既に文書中に存在した場合、insertBefore() はこれを現在の位置から新しい位置に移動します。(つまり、既存の親ノードから自動的に削除され、指定された新しい親に追加されます。)

mdn: これは、1 つのノードが文書中に同時に 2 か所に存在できないことを意味します。

mdn: メモ: Node.cloneNode() を使用すると、ノードを新しい親の下に追加する前に複製を作成することができます。なお、cloneNode() で作成された複製は自動的には同期されません。

構文
Node.insertBefore(newNode, referenceNode)
Node Node。新しく挿入されるノードの、親(要素)ノードです。
newNode Node。挿入するノードです。
referenceNode NodenewNode がこのノードの直前に挿入されます。

null の場合は、newNodeNode の子ノードの末尾に挿入されます。

referenceNode は、必ず Nodeの子ノードでないとだめなようです。

戻り値

Node。挿入したノード(newNode と同じ)です。

関連

Element.insertAdjacentElement()

要素ノードを…

HTML:

<SPAN id=IdTest>[SPAN要素<B id=IdB>[B要素]</B>]</SPAN>

JavaScript:

N=document.createElement('I');  //I 要素を生成。
N.innerText="[I要素]";          //それにテキストを設定。
IdTest.insertBefore(N, IdB);    //IdB の前に挿入。
D=IdTest.outerHTML;             //全体を表示。
	//<span id="IdTest">[SPAN要素<i>[I要素]</i><b id="IdB">[B要素]</b>]</span>

JavaScript: HTMLを表示し直して、

N=document.createElement('I');  //I 要素を生成。
N.innerText="[I要素]";          //それにテキストを設定。
IdTest.insertBefore(N, null);   //挿入参照位置を省いて挿入。
D=IdTest.outerHTML;             //全体を表示。
	//<span id="IdTest">[SPAN要素<b id="IdB">[B要素]</b>]<i>[I要素]</i></span>

末尾に挿入された。

テキストノードを…移動?

HTML:

<SPAN id=IdTest>[SPAN要素。テキスト1<B id=IdB>[B要素]</B>SPANのテキスト2]</SPAN>

JavaScript:

NL=IdTest.childNodes;            //IdTest の子ノード リストを得る。
IdTest.insertBefore(NL[2], IdB); //挿入
D=IdTest.outerHTML;             //全体を表示。
	//<span id="IdTest">[SPAN要素。テキスト1SPANのテキスト2]<b id="IdB">[B要素]</b></span>

テキスト ノードを移動できた。


テスト