JavaScript

最終更新日:
公開日:

レシピ

HTML・DOM

HTML要素を他のHTML要素に置き換える

HTML要素を他のHTML要素に置き換える方法について解説します。

この記事のポイント

  • 指定したHTML要素の子孫要素を置き換えるときはreplaceChildメソッドを使う
  • 指定したHTML要素自身を他のHTML要素に置き換えるときはreplaceWithメソッドを使う

HTML要素の置換

ページ中にある特定のHTML要素を他のHTML要素に置き換えるときは、replaceChildメソッドreplaceWithメソッドを使います。

replaceChildメソッドは、指定したHTML要素の子孫要素を他のHTML要素と置き換えます。
もう1つのreplaceWithメソッドは指定したHTML要素自身を、他のHTML要素に置き換えることができます。
置き換えるHTML要素にその要素自身を含めないときはreplaceChildメソッド、含めるときはreplaceWithメソッドという使い分けになります。

今回は以下のHTMLコードを使って、2つのメソッドの使用例を解説していきます。

HTML コード例

<h1>JavaScriptレシピ</h1>
<article id="textbox">
	<p>このエリアにHTML要素を追加する</p>
</article>

以下の例では、上記HTMLにあるarticle要素id属性から取得して、子孫要素であるp要素を新しく作成したol要素に置き換えます。

JS コード例

// HTML要素を取得
let textbox = document.getElementById("textbox");
let p_element = textbox.querySelector("p");

// 新しくリストを作成
let ol_element = document.createElement('ol');
let li_element1 = document.createElement('li');
let li_element2 = document.createElement('li');
let li_element3 = document.createElement('li');
li_element1.textContent = '新しいテキスト1';
li_element2.textContent = '新しいテキスト2';
li_element3.textContent = '新しいテキスト3';

// 作成したli要素をol要素に追加する
ol_element.appendChild(li_element1);
ol_element.appendChild(li_element2);
ol_element.appendChild(li_element3);

// p要素をol要素に置き換える
textbox.replaceChild( ol_element, p_element);

このコードを実行すると、HTMLは以下のように置き換えられます。

HTML コード例

<article id="textbox">
	<ol>
		<li>新しいテキスト1</li>
		<li>新しいテキスト2</li>
		<li>新しいテキスト3</li>
	</ol>
</article>

replaceChildメソッドは第1パラメータに置き換えた後のHTML要素、第2パラメータに置き換えの対象となる要素を指定することで、2つのHTML要素を置き換えることができます。

続いて、replaceWithメソッドを使って子孫要素だけでなくそのHTML要素自身を置き換えます。
以下の例ではarticle要素を新しく作成したdiv要素に置き換えます。

JS コード例

// id属性からHTML要素を取得
let textbox = document.getElementById("textbox");

// 新しいHTML要素を作成
let div_element = document.createElement('div');
let p_element = document.createElement('p');
p_element.textContent = '新しい要素に置き換え';
div_element.appendChild(p_element);

// 置き換え
textbox.replaceWith(div_element);

このコードを実行すると、HTMLは以下のように置き換えられます。

HTML コード例

<h1>JavaScriptレシピ</h1>
<div>
	<p>新しい要素に置き換え</p>
</div>

replaceWithメソッドは置き換えたいHTML要素のオブジェクトを予め取得しておき、そのオブジェクトからreplaceWithメソッドを呼び出します。
このメソッドを実行すると、呼び出したHTML要素(オブジェクト)をパラメータに渡したHTML要素(オブジェクト)に置き換えます。