- Home ›
- JavaScript入門 ›
- DOM入門
ノードを別のノードに置換(replaceWith, replaceChild)
既存のノードを、別のノードに置き換える方法について解説します。 ChildNode オブジェクトの replaceWith メソッド、または Node オブジェクトの replaceChild メソッドを使います。どちらのメソッドも同じ目的で使用します。
(Last modified: )
ノードを別のノードに置き換える(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 の要素ノードを先に作成した要素ノードで置き換えます。
ノードを別のノードに置き換える(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 の要素ノードを先に作成した要素ノードで置き換えます。
-- --
既存のノードを、別のノードに置き換える方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。