Element.outerHTML

outerHTMLElement DOM インターフェイスの属性で、要素とその子孫を含む部分の HTML がシリアライズされたものを取得します。設定することで、指定された文字列を解釈したノードの要素に置き換えることができます。

要素の内容のみの HTML 表現を取得する場合や、要素の内容を置き換える場合であれば、代わりに innerHTML プロパティを使用してください。

構文

var content = element.outerHTML;

element.outerHTML = htmlString;

outerHTML の値を読み取ると、 element およびその子孫を HTML にシリアライズしたものを含む DOMString が返されます。 outerHTML の値を設定すると、その要素とそのすべての子孫を、指定された htmlString を解釈して構築された新しい DOM ツリーで置き換えます。

例外

SyntaxError DOMException

outerHTML に有効ではない HTML の文字列を使用して設定しようとした場合に発生します。

NoModificationAllowedError DOMException

outerHTMLDocument の直接の子である要素、たとえば Document.documentElement に対して設定しようとした場合。

要素の outerHTML プロパティの値を得る例を示します。

HTML

<div id="d">
  <p>Content</p>
  <p>Further Elaborated</p>
</div>

Javascript

var d = document.getElementById("d");
console.log(d.outerHTML);

// 文字列 '<div id="d"><p>Content</p><p>Further Elaborated</p></div>'
// がコンソールウィンドウに書き出されます。

次の例では、 outerHTML プロパティに値を設定し、ノードを置換します。

HTML

<div id="container">
  <div id="d">これは div です。</div>
</div>

Javascript

var container = document.getElementById("container");
var d = document.getElementById("d");

console.log(container.firstElementChild.nodeName); // "DIV" と出力

d.outerHTML = "<p>この段落は元の div を置き換えたものです。</p>";

console.log(container.firstElementChild.nodeName); // "P" と出力

// #d の div 要素は文書ツリーの一部ではなくなり、
// 新たな段落に置き換えられました。

メモ

要素が親要素を持たない場合、その outerHTML プロパティに値を設定してもその要素や子孫は変更されません。多くのブラウザーでは例外も発生します。以下に例を示します。

var div = document.createElement("div");
div.outerHTML = "<div class=\"test\">test</div>";
console.log(div.outerHTML); // output: "<div></div>"

また、文書の中で要素が置換された場合も、 outerHTML プロパティが設定された変数は、引き続きオリジナルの要素への参照を保持しています。

var p = document.getElementsByTagName("p")[0];
console.log(p.nodeName); // shows: "P"
p.outerHTML = "<div>This div replaced a paragraph.</div>";
console.log(p.nodeName); // still "P";

返値には HTML エスケープされた属性が入ります。

var anc = document.createElement("a");
anc.href = "https://developer.mozilla.org?a=b&c=d";
console.log(anc.outerHTML); // output: "<a href='https://developer.mozilla.org?a=b&amp;c=d'></a>"

仕様書

Specification
DOM Parsing and Serialization
# dom-element-outerhtml

ブラウザーの互換性

BCD tables only load in the browser

関連情報