DOM

Node.replaceChild() メソッド

 編集:2022.10.31 by T.A.

[Edge]。→

親ノード Node の、指定の子ノードを指定の別ノードに置き換えます。そして置き換えられた Node を返します。

構文
Node.replaceChild(newChild, oldChild)
Node Node
newChild NodeoldChild を置き換える新しいノード(既存のノードは先に取り除かれます)。
oldChild Node。置き換えられる既存ノード。
戻り値

置き換えられたノード(oldChild と同じノード)。

mdn

HTML:

<div>
 <span id="childSpan">foo bar</span>
</div>
JavaScript:
//ID も属性も内容も持たない空要素を生成
var sp1 = document.createElement("span");

//生成したノードに id 属性 'newSpan' を付与
sp1.setAttribute("id", "newSpan");

//テキストノードを生成
var sp1_content = document.createTextNode("新しい span 要素");

//生成したテキストノードを先の空要素の子ノードとして配置
sp1.appendChild(sp1_content);

// 置換に先んじ、参照を代入
var sp2 = document.getElementById("childSpan"); // 既存の置換対象ノード
var parentDiv = sp2.parentNode; // 置換対象ノードの親要素

// 既存ノード "sp2" を 生成済の新しい span 要素 "sp1" と置換
parentDiv.replaceChild(sp1, sp2);
上記 HTML コード実行後のノードは以下の様になります:
<div>
 <span id="newSpan">新しい span 要素</span>
</div>

HTML:

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

JavaScript:

N=document.createElement('I');  //I 要素を生成。
N.innerText="[I要素]";          //そのテキストを設定。
NL=IdTest.childNodes;            //IdTest の子ノード リストを得る。
D=IdTest.replaceChild(N, NL[0]); //IdTest の子ノード 0 番目に作成した要素に置き換える。
DA=IdTest.outerHTML;  //全体表示。
	//=[string]:<span id="IdTest"><i>[I要素]</i><b>[B要素]</b>テキスト]</span>

取得した内容:D

=[object]:[object Text]
wholeText=[string]:[SPAN要素。テキスト
assignedSlot=[object]:null
splitText=[function]:function splitText() { [native code] }
data=[string]:[SPAN要素。テキスト

JavaScript: HTMLを表示しなおして、

NL=IdTest.childNodes;                //IdTest の子ノード リストを得る。
D=IdTest.replaceChild(NL[2], NL[0]); //IdTest の子ノード 0 番目に、同、子ノード 2 番目に置き換える。
DA=IdTest.outerHTML;  //全体表示。
	//=[string]:<span id="IdTest">テキスト]<b>[B要素]</b></span>

ノードの移動ができた。


テスト