【JavaScript入門】要素のテキストを設定・取得する方法

JavaScriptで要素のテキストを、取得・設定する方法についてまとめました。

取得

① textContentプロパティ(HTML文字列を含まない場合)

② innerHTMLプロパティ(HTML文字列を含む場合)

設定

③ textContentプロパティ(HTML文字列を含まない場合)

④ createElement、createTextNodeメソッド(HTML文字列を含む場合)

要素のテキストを取得

① textContentプロパティ(HTML文字列を含まない場合)

取得するテキストに、HTML文字列を含まない、またはHTML文字列が含まれていても無視して取得する場合は、textContentプロパティ を使用します。

書式:element.textContent

次の例では、div要素(id = text-msg) のテキストを取得しています。

html

javascript

この例では、コンソールに、”HTMLを含まない文字列” と表示されます。

では、次のように文字列の中にHTMLが含まれる場合は、どのように取得できるでしょうか?

先ほどと同様のjavascriptで取得すると、以下の文字列が取得できます。

このように、指定した要素配下のHTML要素が省かれた文字列が取得できます。

② innerHTMLプロパティ(HTML文字列を含む場合)

取得するテキストに、HTML文字列を含む場合は、innerHTMLプロパティ を使用します。

書式:element.innerHTML

先ほどの、textContentと同じ例で試してみます。

html

javascript

この場合、innerHTMLでは、textContentとは異なり、HTML文字列がそのまま取得できます。コンソールには、次のように表示されます。

要素のテキストを設定

③ textContentプロパティ(HTML文字列を含まない場合)

HTML文字列を含まない文字列の場合は、textContentプロパティを使用します。
もし、HTML文字列が含まれていた場合、ただの文字列として設定されます。
そのため、”ブラウザにHTMLの要素を追加する” などの用途には向きません。

書式:element.textContent = “設定する文字列”

次の例では、div要素(id=text-mod-msg)に設定されている文字列を変更します。

html

javascript

実行すると、以下のようにテキストが書き換わります。

さて、取得の時と同じように、次はHTMLタグを含む文字列を設定した場合はどうなるでしょうか?
javascriptを、次のように変更してみます。

ブラウザには、次のように表示されます。

HTMLタグが、そのまま表示されています。実際は、タグ<> が文字実体参照され、次のようにエスケープされています。

このように、textContent を使用するとHTMLタグの無効化を行うことができるので、XSS対策としても有効になります。

④ createElement、createTextNodeメソッド(HTML文字列を含む場合)

createElementメソッド

新たに要素を作成することができます。

createTextNodeメソッド

要素に設定するテキストを作成することができます。

手順としては、次のようになります。
① createElement で要素を作成します。
② createTextNode で、①の要素に設定するテキストノードを作成します。
③ ①の要素に②のテキストノードを追加します。

例えば、textContentで追加した次の例を、HTML文字列 <p> や <button> を 要素として追加する場合は、次のようにします。

javascript

次のように、p要素、button要素が HTMLとして反映されました。

このようにして、要素の追加を行います。

最後に、要素の追加には、innerHTMLを使うことができますが、きちんとサニタイジングしないと、XSSの危険性があるためオススメできません。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする