HTML 要素の innerText プロパティで要素が生成されうる ― 2021年12月10日 11時13分
この記事は HTML アドベントカレンダーの 10 日目の分、兼 JavaScript アドベントカレンダーの 10 日目の分です。
HTML 標準では、HTML 文書を JavaScript などのプログラミング言語から扱うためのインターフェイスも定義しています。そのひとつが HTML 要素の innerText
プロパティ、要素の内容を文字列として取得・設定するプロパティです。かつて Internet Explorer が独自に実装し、他の Web ブラウザも追従した結果として標準化されたものですね。
innerText
プロパティの値の取得
innerText
プロパティで取得できる値は、ブラウザにレンダリングされたようなテキスト内容となります。CSS で display: none;
が指定された要素の内容は含まれませんし、display: block;
が指定された要素の内容の前後には改行文字 (U+000A) が挿入されます。表のセル同士の間にはタブ文字 (U+0009) が挿入されます。
そのため、innerText
プロパティの値を取得する際にはブラウザの描画処理、いわゆるリフローが走ることになります。スタイルを気にせず単に要素のテキスト内容を取得したいときは、innerText
プロパティではなく textContent
プロパティを使ったほうがよいでしょう。textContent
プロパティの値の取得時にはリフローが走りません。
innerText
プロパティの値の設定
innerText
という名前からすると値の設定時には単なるテキストノードが生成されそうな気もしますが、HTML 要素が生成されることもあります。設定する値に改行文字が含まれるときは、その改行文字が br
要素に置換されるのです。
単に要素のテキスト内容を設定したいときは、innerText
プロパティではなく textContent
プロパティを使ったほうがよいでしょう。textContent
プロパティの値の設定時には HTML 要素が生成されません。
参考文献
コメント
トラックバック
このエントリのトラックバックURL: http://nanto.asablo.jp/blog/2021/12/10/9446902/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。