高校化学2914160 views
小学理科717454 views
雑学1472721 views
世界の国560930 views
高校生物549999 views
数学講師2856326 views
中学数学621573 views
中学理科1626729 views
いろは2988729 views
小学算数1195447 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 は強力ですが、参照が切れることを意識して使いましょう。頻繁に使うものではありませんが、要素をまるごと差し替えたいときに便利です。