ホームページ > ウェブフロントエンド > jsチュートリアル > ドキュメント内のすべての TextNode を取得するのに相当する getElementsByTagName() はありますか?

ドキュメント内のすべての TextNode を取得するのに相当する getElementsByTagName() はありますか?

DDD
リリース: 2024-11-25 08:51:11
オリジナル
229 人が閲覧しました

Is There a getElementsByTagName() Equivalent for Retrieving All TextNodes in a Document?

getElementsByTagName() TextNodes と同等

質問:

に似たメソッドはありますかgetElementsByTagName() は、次のすべての textNode のコレクションを取得します。

ディスカッション:

getElementsByTagName() は要素を効率的に収集できますが、textNodes には拡張されません。 DOM をトラバースすることは実行可能なオプションですが、この質問では、ネイティブのブラウザベースのソリューションの可能性を検討しています。

回答:

現時点では、getElementsByTagName に直接相当するものはありません。 () はテキストノードの場合。ただし、代替方法がいくつかあります。

  1. TreeWalker: TreeWalker を使用すると、ドキュメント ツリーを反復的に移動し、テキスト ノードを選択的に抽出できます。
  2. カスタム反復走査: このメソッドには、ドキュメント本文から開始してドキュメント全体を反復処理することが含まれます。すべての子ノード。テキスト ノードを配列にプッシュします。
  3. カスタム再帰トラバーサル: 反復アプローチと似ていますが、戻る前に再帰関数を使用してツリーをより深くトラバースします。
  4. XPath クエリ: XPath クエリを使用すると、テキスト ノード内のすべてのテキスト ノードを選択できます。 document.
  5. querySelectorAll: テキスト ノードを直接ターゲットにしていませんが、このセレクターは、最初のテキスト子ノードを含む要素を含むすべての要素を返すことができます。
  6. getElementsByTagName : 完全一致ではありませんが、通常は子テキスト ノードを含む要素が返されます (例: p).

パフォーマンス テスト:

パフォーマンス テストにより、TreeWalker が getElementsByTagName( )。カスタム反復走査も優れたパフォーマンスを示しています。 XPath と querySelectorAll は満足のいく結果をもたらしますが、再帰的トラバーサルは再帰が深くなるため遅れをとっています。

追加の洞察:

テキスト ノードを収集するためのネイティブ メソッドが存在したとしても、ただし、各ノードから実際のテキスト コンテンツを走査して抽出する必要があります。したがって、パフォーマンスのボトルネックは、テキスト ノードを反復処理することだけでなく、非テキスト ノードを調べてそのタイプを判断することにもあります。

以上がドキュメント内のすべての TextNode を取得するのに相当する getElementsByTagName() はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート