高校倫理1441553 views
雑学1473806 views
中学理科1631666 views
高校物理160808 views
ヒストリア292018 views
高校化学2926977 views
小学社会310824 views
いろは3015680 views
LaTeX963205 views
教育149663 views
Help
Tools

English

outerHTML で要素ごと置き換える

outerHTML は、要素自身も含めた HTML 文字列を取得・設定するプロパティです。innerHTML が中身だけなのに対し、outerHTML は要素自体も含みます。

innerHTML との違い

<div id="container">
  <p id="target" class="message">こんにちは</p>
</div>
const target = document.getElementById('target');

// innerHTML は中身だけ
console.log(target.innerHTML);
// "こんにちは"

// outerHTML は要素自身も含む
console.log(target.outerHTML);
// '<p id="target" class="message">こんにちは</p>'

outerHTML を設定する

outerHTML に値を設定すると、要素自体が置き換わります。

target.outerHTML = '<span>新しいスパン</span>';

この操作の後、元の target 変数は DOM から切り離された状態になります。

const target = document.getElementById('target');
target.outerHTML = '<span id="new">新しい要素</span>';

// target はもう DOM にない
console.log(target.parentNode); // null

// 新しい要素を取得するには再度検索が必要
const newElement = document.getElementById('new');

実際に動かしてみよう

HTML
CSS
JavaScript
<div id="container">
  <p id="target">これは段落です</p>
</div>
<button id="toSpan">span に変換</button>
<button id="toDiv">div に変換</button>
<p id="result"></p>
#container { padding: 15px; background: #f5f5f5; margin-bottom: 10px; }
#container span { color: blue; }
#container div { color: green; font-weight: bold; }
document.getElementById('toSpan').addEventListener('click', () => {
  const target = document.getElementById('target');
  if (target) {
    target.outerHTML = '<span id="target">これはスパンです</span>';
    document.getElementById('result').textContent = '段落をスパンに変換しました';
  }
});

document.getElementById('toDiv').addEventListener('click', () => {
  const target = document.getElementById('target');
  if (target) {
    target.outerHTML = '<div id="target">これは div です</div>';
    document.getElementById('result').textContent = 'スパンを div に変換しました';
  }
});

使いどころ

要素のタグを変更したい

p を div に変えたい、などのケースで使える

要素を丸ごと置換したい

属性ごと別の要素に差し替える

注意点

const element = document.getElementById('target');

// outerHTML 設定後、element は無効になる
element.outerHTML = '<span>新しい</span>';

// この後 element を使おうとしても期待通り動かない
element.textContent = 'テスト'; // DOM に反映されない

innerHTML との比較

innerHTML

要素の中身を操作。要素自体は残る

outerHTML

要素ごと置き換える。元の参照は無効になる

outerHTML は強力ですが、参照が切れることを意識して使いましょう。頻繁に使うものではありませんが、要素をまるごと差し替えたいときに便利です。