Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

HTML要素.innerHTML対応: HTML5(IE起源→標準化)

HTML要素内のHTMLを文字列として取得、または設定します。HTMLタグがそのまま解釈されるため、動的にHTMLを挿入する場合に使用します。

構文
// HTMLを取得します。
var html = element.innerHTML;

// HTMLを設定します。
element.innerHTML = "<p>新しいテキスト</p>";
サンプルコード
<div id="box">
	<p>元のテキスト</p>
</div>
var box = document.querySelector("#box");

// HTMLを取得します。
console.log(box.innerHTML); // HTML要素内のHTMLがそのまま出力されます。

// HTMLを設定します。タグがそのまま解釈されます。
box.innerHTML = "<ul><li>項目1</li><li>項目2</li></ul>";

// HTML要素を空にします。
box.innerHTML = "";
実行結果

上記のコードを実行すると、HTMLは以下のように変化します。

<!-- 実行前 -->
<div id="box">
	<p>元のテキスト</p>
</div>

<!-- innerHTML設定後 -->
<div id="box">
	<ul><li>項目1</li><li>項目2</li></ul>
</div>

<!-- innerHTML = "" 実行後 -->
<div id="box"></div>

HTML要素.textContent』と異なり、HTMLタグがそのまま解釈されてHTML要素が生成されます。

セキュリティ上の注意

ユーザーが入力した値を『HTML要素.innerHTML』でそのまま挿入すると、悪意のあるスクリプトが実行される恐れがあります(XSS: クロスサイトスクリプティング)。

// 危険な例
var userInput = '<img src=x onerror="alert(document.cookie)">';
element.innerHTML = userInput; // スクリプトが実行されてしまいます。

// ユーザー入力にはtextContentを使うのが安全です。
element.textContent = userInput; // 文字列としてそのまま表示されます。
概要

『HTML要素.innerHTML』はHTML要素の中身をHTML文字列として取得・設定するプロパティです。取得時にはタグ構造を含む文字列がそのまま返され、設定時にはHTMLとして解釈されてDOMに反映されます。

HTML要素の中身を空にしたい場合は『HTML要素.innerHTML = ""』と指定するのが簡単です。

ユーザーの入力値を表示する場合は、セキュリティの観点から『HTML要素.textContent』の使用をおすすめします。『HTML要素.innerHTML』は信頼できるHTMLを動的に挿入する場合にのみ使用してください。

『HTML要素.innerHTML』はチュートリアル記事『HTML要素の中身を変えるinnerHTML』で、より詳しく解説しています。良ければご覧下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。