50

重複の可能性:
DOMテキストノードのテキストを取得する方法は?

targetDOMミューテーションオブザーバーを処理するための実験で、がテキストノードの場合、ノードの新しいテキストをすべて含む4つのフィールドがあることに気付きました。

  • data
  • nodeValue
  • textContent
  • wholeText

これらのフィールドのどれを使用する必要があるかについての「ベストプラクティス」はありますか?

他のブラウザや古いDOM標準との互換性のためだけのものはありますか?私が読んでいるのか、テキストを変更しているのかで違いはありますか?1つが最善である場合、他の目的は何ですか?

4

1 に答える 1

45

これらすべての中から私が選択します。これは、 CharacterDataインターフェイス(テキストおよびコメントのもの)をdata実装するノードに対してのみ定義されます。他の人のためにこのプロパティにアクセスしようとすると、が得られます。undefined

nodeValueは基本的dataにテキストノードの場合と同じですが、実際には属性ノードとコメントノードにも定義されています。そして、私は通常、プログラムを早期に失敗させたいと思っています。)。

textContentは、ノードとその子孫のテキストコンテンツを表すため、私にとってはまったく異なるものです。これは、 wholeTextとともに、単一のテキストノードよりも複雑な構造からテキストを収集するために使用する必要があります。

textContentそれをすべて言いwholeText、DOMレベル3(=より現代的)で定義されました。

于 2012-09-05T17:57:42.567 に答える