0Pricing
JavaScript Academy · レッスン

テキストと HTML コンテンツを変更する

textContent と innerHTML でコンテンツを更新します。

「テキストと HTML コンテンツを変更する」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全4レッスンが含まれています。

テキストの読み取りと書き込み

要素に表示する内容を変更するには、テキストまたは HTML を設定します。マークアップが必要かどうか、またデータをどの程度信頼できるかによって、適切な方法が決まります。

textContent

textContent は要素の生のテキストを取得または設定します。設定するとすべての子要素が 1 つのテキストノードに置き換えられ、入力はプレーンテキストとして扱われます。

const el = document.querySelector("#status");
el.textContent = "Saved!";

textContent はマークアップをエスケープする

プレーンテキストとして扱われるため、文字列内の HTML は解析されず、そのまま表示されます。これにより、インジェクションに対して安全です。

el.textContent = "<b>hi</b>";
// displays the literal characters <b>hi</b>

innerHTML

innerHTML は要素内の HTML マークアップを取得または設定します。設定すると文字列が HTML として解析され、実際のノードが構築されます。

const box = document.querySelector("#box");
box.innerHTML = "<strong>Done</strong>";

innerHTML はすべてを置き換える

innerHTML に代入すると既存の子要素が破棄され、新しいマークアップからサブツリーが再構築されます。

box.innerHTML = "<ul><li>One</li><li>Two</li></ul>";

XSS の危険性

信頼できないユーザー入力を innerHTML に決して入れないでください。悪意のある文字列によってスクリプトやイベントハンドラーが挿入される可能性があります。これは XSS と呼ばれる脆弱性です。

const userInput = getInput();
// DANGEROUS:
// box.innerHTML = userInput;
// SAFE:
box.textContent = userInput;

innerText

innerText は textContent と似ていますが、スタイルを認識します。描画されたテキストを反映し、非表示の要素は無視します。

console.log(el.innerText); // visible text only

textContent と innerText の比較

textContent は非表示の内容を含むすべてのテキストを返します。また、レイアウト処理を発生させないため高速です。innerText はレイアウトを認識するため、より低速です。

el.textContent; // all text, even display:none
el.innerText;   // only what is visually rendered

テキストを安全に追加する

既存のノードを消去せずにテキストを追加するには、textContent を上書きするのではなく、テキストノードを構築するか insertAdjacentText を使います。

el.append(document.createTextNode(" extra"));
el.insertAdjacentText("beforeend", " more");

再解析せずに HTML を挿入する

insertAdjacentHTML は要素全体を再解析せずに、指定した位置へマークアップを追加します。そのため、innerHTML を再構築するより効率的です。

box.insertAdjacentHTML("beforeend", "<li>New item</li>");

適切なプロパティを選ぶ

プレーンテキストには textContent(安全なデフォルト)を使い、innerHTML は信頼できるマークアップに限って使います。描画済みの表示テキストが必要な場合は innerText を使います。

簡単な確認

安全な方法を選びましょう。

まとめ

textContent はプレーンテキストをエスケープして設定するため、安全なデフォルトです。innerHTML はマークアップを解析しますが、信頼できない入力では XSS の危険があります。innerText は表示されている描画済みテキストだけを反映します。コンテンツを追加する場合は、要素全体を上書きするより insertAdjacentHTML/insertAdjacentText を優先してください。

よくある質問

「テキストと HTML コンテンツを変更する」レッスンは無料ですか?

はい。「テキストと HTML コンテンツを変更する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全4レッスンが含まれています。

「テキストと HTML コンテンツを変更する」で何を学びますか?

textContent と innerHTML でコンテンツを更新します。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

JavaScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「テキストと HTML コンテンツを変更する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJavaScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. テキストと HTML コンテンツを変更する
  2. 要素を作成して挿入する
  3. 属性とクラスを変更する
  4. ノードを削除・置換する
← JavaScript Academyに戻る