ホームページ >ウェブフロントエンド >jsチュートリアル >`getElementsByTagName()` の制限がある場合、ドキュメント内のすべてのテキスト ノードを効率的に取得するにはどうすればよいですか?
getElementsByTagName() TextNodes と同等
getElementsByTagName() はドキュメント内の要素のコレクションを効率的に取得しますが、textNode オブジェクトを除外し、個性的
代替アプローチ
すべての textNode オブジェクトを取得するネイティブ メソッドがないにもかかわらず、いくつかのアプローチで効果的にこれを達成できます。
1. TreeWalker:
TreeWalker を利用して深さ優先の方法で DOM を移動し、textNodes を識別して収集します。
2.カスタム走査反復:
DOM を反復的に走査し、各ノードを検査し、ノード タイプ 3 を textNode として分類します。
3。カスタム トラバーサル再帰:
再帰関数を使用して DOM を下降し、トラバーサル パスに沿って検出された textNodes をキャプチャします。
4. Xpath クエリ:
XPath 式を利用してドキュメント内のすべての textNode を選択します。
5. querySelectorAll:
DOM 内のすべてのノードを選択し、結果をフィルターして textNodes のみを含めます。
6. getElementsByTagName (Handicap):
getElementsByTagName() で取得したすべての要素の最初の子を textNode であると想定して、間接的に textNode を識別しようとします。このアプローチには制限があるため、注意して使用する必要があることに注意してください。
パフォーマンスの比較
パフォーマンス テストでは、getElementsByTagName() が最も高速に実行されますが、特定の textNodes が除外されることが明らかになりました。対照的に、TreeWalker は、すべての textNode を効果的にキャプチャしながら、同等の速度を示します。カスタムの再帰的トラバーサル メソッドは、テストしたメソッドの中で最も遅いです。
追加の考慮事項
選択したメソッドに関係なく、textNodes の実際のテキスト コンテンツにアクセスするには、後続の反復が必要です。 node.nodeValue を使用した抽出。
詳細については、次のディスカッションを参照してください。 http://bytes.com/topic/javascript/answers/153239-how-do-i-get-elements-text-node.
以上が`getElementsByTagName()` の制限がある場合、ドキュメント内のすべてのテキスト ノードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。