getElementsByTagName() Équivalent pour TextNodes
Bien que getElementsByTagName() récupère efficacement les collections d'éléments dans un document, il exclut les objets textNode, posant ainsi un problème. défi unique.
Alternative Approches
Malgré l'absence de méthode native pour obtenir tous les objets textNode, plusieurs approches peuvent efficacement y parvenir :
1. TreeWalker :
Utilise un TreeWalker pour naviguer dans le DOM de manière approfondie, en identifiant et en collectant des nœuds de texte.
2. Traversée personnalisée itérative :
Parcourt de manière itérative le DOM, en examinant chaque nœud et en catégorisant tout nœud de type 3 en tant que textNode.
3. Récursif de traversée personnalisé :
Utilise une fonction récursive pour descendre à travers le DOM, capturant les nœuds de texte rencontrés le long du chemin de traversée.
4. Requête XPath :
Exploite une expression XPath pour sélectionner tous les nœuds de texte dans le document.
5. querySelectorAll :
Sélectionne tous les nœuds du DOM et filtre le résultat pour inclure uniquement textNodes.
6. getElementsByTagName (Handicap) :
Tentent d'identifier indirectement textNodes en ciblant le premier enfant de chaque élément récupéré par getElementsByTagName(), en supposant qu'il s'agit d'un textNode. Notez que cette approche a des limites et doit être utilisée avec prudence.
Comparaison des performances
Les tests de performances révèlent que getElementsByTagName() fonctionne le plus rapidement mais exclut certains textNodes. En revanche, TreeWalker présente une vitesse comparable tout en capturant efficacement tous les textNodes. La méthode de parcours récursif personnalisée est la plus lente des méthodes testées.
Considérations supplémentaires
Indépendamment de la méthode choisie, l'accès au contenu textuel réel de textNodes nécessite une itération ultérieure et extraction à l'aide de node.nodeValue.
Pour plus d'informations, reportez-vous à la discussion sur http://bytes.com/topic/javascript/answers/153239-how-do-i-get-elements-text-node.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!