innerText と textContent の違い

Jan 16, 2018 am 11:15 AM
javascript

<p> innerText と textContent は両方ともテキスト コンテンツの取得に使用できるため、多くの人が混乱しています。実際、この記事では、これら 2 つの属性の類似点と相違点を紹介します。誰もが学んでいます。

innerText と textContent の違い

<p> 1. 以前の誤解

innerText 当時、Firefox ブラウザーはこの API をサポートしていませんでした。サポートし始めたのは 2016 年 3 月の Firefox 45 以降でした。それ。 <p>

innerText と textContent の違い

textContent IE9 ブラウザはサポートを開始したばかりです: <p>

innerText と textContent の違い

互換性のため、PC 側のプロジェクトを開発する場合、要素のテキスト コンテンツは次のステートメントを使用して取得されます: <p>
var text = dom.innerText || dom.textContent;
ログイン後にコピー

Over timeと勘違いしてしまいますが、 innerText と textContent は同じ機能を持つと考えられています。 <p>

最近の練習で、お母さん、innerText と textContent には違いがあることが突然わかりました。この違いは初心者にとっては簡単にわかるものであり (なぜ API が 2 つあるのか疑問に思うでしょう)、私は深く理解しました。互換性の高さに感銘を受けました(IE のテキスト取得 API と Firefox のテキスト取得 API は相互にサポートしていると考えていました)。 <p>

違いは何ですか?いくつかの例を見てみましょう。 <p>

<p>2. innerText と textContent の違い

違いの 1 つは、呼び出し元のオブジェクトが異なることです<p>。 innerText は HTML 要素でのみ呼び出すことができますが、textContent は任意の Node ノード (HTMLElement.innerText および Node.textContent) で呼び出すことができます。 2 番目の違いは、

値の取得ルールが異なることです<p>。

1. ブロックレベル要素と改行のルールの違い<p>次の HTML 部分があることが知られています:

<p id="dom">一段文字内容<span style="position:absolute;">...</span></p>
ログイン後にコピー
<p> リアルタイム効果は次のとおりです:

一段文字内容…
ログイン後にコピー
<p> < code>position:absolute が設定されている <span> 要素内のドットとドットは、前後にスペースがなく、前のテキスト コンテンツと密接に接続されています。

<p>ただし、id="dom"</ の <code><p> 要素の innerTexttextContent を取得すると、 code> それぞれ > 値、innerText の戻り値には、実際にはドットの前にスペースがありました。 position:absolute<span>元素里面的点点点...和前面的文字内容是紧密连接在一起的,前后没有任何空格。

<p>但是,当我们分别获取id="dom"<p>元素的innerTexttextContent值的时候,有意思的事情发生了,innerText的返回值居然在点点点前面出现了一个空格。

<p>如下截图所示:

<p>innerText と textContent の違い

<p>innerTexttextContent表现出了不同,眼见为实,您可以狠狠地点击这里:innerText和textContent区别对比demo

<p>为什么会有这样的差异呢?

<p>实际上是innerText会保留块级元素的换行特性,以换行符形式呈现。在HTML中,如果white-space不是prepre-wrap则会表现为空格。也就是下图中的空格实际上是换行符:

<p>innerText と textContent の違い

<p>例如,我们设置呈现结果的父元素white-space:pre,则会出现下图所示的效果:

<p>innerText と textContent の違い

<p>在本例中,虽然<span>元素是内联元素,但由于设置了position:absolute使其display计算值变成了block,因此,虽然视觉上没有换行,但innerText获取的时候依旧产生了换行,导致空格出现。

<p>2. 规则差异之隐藏元素的获取与否

<p>已知有下面一段HTML:

<p id="dom2">我后面有一段隐藏文字<span hidden>,就是我啦!</span></p>
ログイン後にコピー
<p>此时,我们显示dom2.innerTextdom2.textContent的返回值,也会看出区别,如下图所示:

<p>innerText と textContent の違い

<p>可以看到,display:none元素是无法使用innerText获取的,但是textContent

以下のスクリーンショットに示すように: <p> 3. png

innerTexttextContent は違いを示しています。百聞は一見に如かずです。ここをクリックしてください: <p>innerText と textContent の違いの比較デモ

なぜ存在するのかそんな違い? 🎜🎜実際、 innerText はブロックレベル要素の行折り返し特性を保持し、改行の形式で表示します。 HTML では、white-spacepre または pre-wrap ではない場合、スペースとして表示されます。つまり、下の図のスペースは実際には改行です: 🎜🎜innerText と textContent の違い🎜🎜例えば、レンダリング結果の親要素white-space:preを設定すると、下図のような効果が現れます。 : 🎜🎜innerText と textContent の違い🎜🎜この場合、< code><span> 要素はインライン要素ですが、position:absolute が設定されているため、その display の計算値はしたがって、block では、見た目には改行がありませんが、innerText を取得するときに改行が生成され、スペースが生じます。 🎜🎜🎜2. ルールの違い: 隠し要素を取得するかどうか🎜🎜🎜次のようなHTMLがあることがわかっています: 🎜
var text = dom.textContent;
ログイン後にコピー
ログイン後にコピー
🎜このとき、dom2.innerTextを表示します。 >dom2.textContent 以下の図に示すように、違いは戻り値にも現れます: 🎜🎜innerText と textContent の違い🎜🎜innerText< を使用して <code>display:none 要素を取得できないことがわかります。 /code> ですが、要素が非表示かどうかに関係なく、 textContent も同様です。 🎜🎜ここをクリックしてください: 🎜innerText と textContent の違いの比較デモ🎜🎜🎜🎜3. パフォーマンスとリフローのルールの違い🎜🎜<p>此外,由于innerText属性值的获取会考虑CSS样式,因此读取innerText的值将触发回流以确保计算出的样式是最新的,而回流在计算上很昂贵,会降低性能,因此应尽可能避免回流。而textContent只是单纯读取文本内容,因此性能更高。

<p>4. IE浏览器不符合上面规则

<p>但是在IE浏览器下,innerText的表现和规范是不符的,最终表现为textContent属性一样的效果,也就是没有空格,也不会不显示隐藏元素,例如下面IE11下的效果截图:

<p>innerText と textContent の違い

<p>另外,与textContent不同,在Internet Explorer(版本11及以下)中更改innerText将从元素中移除子节点,并永久销毁所有子文本节点。不可能再将节点插入任何其他元素或同一元素中。

<p>三、最后的结论

<p>innerText由于存在诸多特别的特性、以及兼容性差异,以及性能方面问题,以及实际开发的需求的考量,不推荐使用,推荐使用textContent获取文本内容。

var text = dom.textContent;
ログイン後にコピー
ログイン後にコピー
<p>如果你的项目还需要兼容IE8浏览器,则使用下面的代码:

var text = dom.textContent || dom.innerText;
ログイン後にコピー

<p>四、三言两语的结语

<p>没想到innerText包含的细节这么多。innerHTML是高频使用属性,没想到原本以为相对应也会高频使用的innerText居然这么有故事,地位被textContent取代了,就像小说里的故事一样,总是出乎意料。

<p>另外,如果你要在一个DOM元素中改变文字内容,推荐使用textContent,而不是innerHTML,性能会更高一点。

<p>好了,就说这么多,一个小小的研究,希望能够对大家的学习有所帮助。

<p>原文地址:https://www.zhangxinxu.com/wordpress/?p=8941

<p>本文来自 js教程 栏目,欢迎学习!

以上がinnerText と textContent の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 Dec 17, 2023 am 08:41 AM

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。

See all articles