ノードを別のノードに置換(replaceWith, replaceChild)

広告

既存のノードを、別のノードに置き換える方法について解説します。 ChildNode オブジェクトの replaceWith メソッド、または Node オブジェクトの replaceChild メソッドを使います。どちらのメソッドも同じ目的で使用します。

ノードを別のノードに置き換える(replaceWith)

ChildNode オブジェクトの replaceWith メソッドはノードを別のノードに置き換えます。書式は次のとおりです。

childnode.replaceWith(node[,node,...])

引数には置き換える Node オブジェクトまたは DOMString オブジェクトを指定します。 DOMString オブジェクトを指定した場合はテキストノードに自動的に変換されて追加されます。複数のノードを指定した場合は、対象のノードを複数のノードと置き換えます。

※ このメソッドは親ノードではなく置き換えるノードに対して実行する点に注意してください。

例えば div タグの要素ノードを新しく作成し、 id 属性が xxx のノードと置き換える場合は次のように記述します。

let childnode = document.getElementById('xxx');
let child = document.createElement('div');

childnode.replaceWith(child);
サンプルコード

次のサンプルを見てください。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ノードを置き換え</title>
</head>
<body>

<p>今日は外でランチを食べました。</p>

<ul id="shopinfo">
  <li id="menu01">リストランテ南青山</li>
  <li id="menu02">東京都港区南青山</li>
</ul>

<p>美味しかったです。</p>

<button onClick="getElement();">ノードを置き換え</button>

<script>
function getElement(){
    let child = document.createElement('li');
    child.append('洋食屋');

    let childnode = document.getElementById('menu01');
    childnode.replaceWith(child);
}
</script>
</body>
</html>

表示されたボタンをクリックすると、まず li タグの新しい要素ノードとテキストノードを作成し、テキストノードを要素ノードに子ノードの最後に追加します。そのあとで id 属性が menu01 の要素ノードを先に作成した要素ノードで置き換えます。

ノードを別のノードに置き換える(replaceWith)

ノードを別のノードに置き換える(replaceChild)

Node オブジェクトの replaceChild メソッドはノードを別のノードに置き換えます。書式は次のとおりです。

parentnode.replaceChild(node, childnode)

2 番目の引数に指定した Node オブジェクトを 1 番目の引数に指定した Node オブジェクトで置き換えます。

例えば div タグの要素ノードを新しく作成し、 id 属性が xxx のノードの子ノードで id 属性が yyy のノードと置き換える場合は次のように記述します。

let parentnode = document.getElementById('xxx');
let childnode = document.getElementById('yyy');
let child = document.createElement('div');

parentnode.replaceChild(child, childnode);
サンプルコード

次のサンプルを見てください。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ノードを置き換え</title>
</head>
<body>

<p>今日は外でランチを食べました。</p>

<ul id="shopinfo">
  <li id="menu01">リストランテ南青山</li>
  <li id="menu02">東京都港区南青山</li>
</ul>

<p>美味しかったです。</p>

<button onClick="getElement();">ノードを置き換え</button>

<script>
function getElement(){
    let child = document.createElement('li');
    child.append('洋食屋');

    let parentnode = document.getElementById('shopinfo');
    let childnode = document.getElementById('menu01');
    shopinfo.replaceChild(child, childnode);
}
</script>
</body>
</html>

表示されたボタンをクリックすると、まず li タグの新しい要素ノードとテキストノードを作成し、テキストノードを要素ノードに子ノードの最後に追加します。そのあとで id 属性が shopinfo の要素ノードの子ノードで id 属性が menu01 の要素ノードを先に作成した要素ノードで置き換えます。

ノードを別のノードに置き換える(replaceChild)(1)

-- --

既存のノードを、別のノードに置き換える方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。