TreeWalker | NN 7 IE s.o DOM 2 | |||||||
L´objet TreeWalker est une liste de noeuds hiérarchique en temps réel qui satisfont les critères définis par la méthode document.createTreeWalker(). La liste a la même hiérarchie parent-descendant pour ses éléments que les noeuds des éléments sur lesquels elle pointe. La méthode createTreeWalker() décrit le noeud où la liste commence et quels noeuds (ou classes de noeuds) ne se trouvent pas dans la liste du fait du filtrage. |
||||||||
L´objet TreeWalker maintient une sorte de pointeur au sein de la liste (ainsi vos scripts n´ont pas à le faire). Les méthodes de cet objet permettent aux scripts d´accéder au noeud suivant ou précédent dans la liste (ou noeud frère, enfant ou parent), tout en déplaçant le pointeur dans la direction indiquée par la méthode que vous avez choisie. Si les scripts modifient l´arborescence de documents après la création de TreeWalker, les modifications de l´arborescence de documents sont automatiquement reflétées dans la séquence de noeuds de TreeWalker. |
||||||||
Bien qu´entièrement utilisable dans un document HTML, TreeWalker est encore plus utile dans un document de données XML. Par exemple, le DOM W3C ne fournit pas de façon rapide d´accéder à tous les éléments ayant un nom d´attribut particulier (ce que la norme XPATH peut facilement faire sur le serveur). Mais vous pouvez définir un TreeWalker qui ne pointe que sur les noeuds dotés de l´attribut désiré et accéder rapidement à ces noeuds séquentiellement (c´est-à-dire sans avoir à créer par script des boucles compliquées permettant de chercher les éléments désirés dans tous les noeuds). Par exemple, la fonction de filtre suivante n´autorise que les noeuds contenant l´attribut author à être des éléments de l´objet TreeWalker: function authorAttrFilter(node) { if (node.hasAttribute("author")) { return NodeFilter.FILTER_ACCEPT; } return NodeFilter.FILTER_SKIP; } |
||||||||
Une référence à cette fonction devient l´un des paramètres d´une méthode createTreeWalker() qui limite également la liste aux noeuds éléments: var authorsOnly = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, authorAttrFilter, false); |
||||||||
Vous pouvez alors invoquer les méthodes d´objet TreeWalker afin d´obtenir une référence à l´un des noeuds de la liste. Lorsque vous invoquez la méthode, l´objet TreeWalker applique le filtre aux candidats en fonction de la position courante du pointeur interne dans la direction indiquée par la méthode. Le noeud d´arborescence de documents qui satisfait les critères de la méthode et du filtre suivant est renvoyé. Une fois que vous avez la référence de ce noeud, vous pouvez accéder à n´importe quelle propriété ou méthode du DOM pour travailler avec ce noeud, indépendamment des éléments de la liste TreeWalker. |
||||||||
Référence de modèle d'objet | ||||||||
TreeWalkerReference
|
||||||||
Propriétés spécifiques à l´objet | ||||||||
|
||||||||
Méthodes spécifiques à l´objet | ||||||||
|
||||||||
Propriétés de gestionnaire d´événements spécifiques à l´objet | ||||||||
Aucune. |
currentNode | NN 7 IE s.o DOM 2 |
Lecture/écriture | |
Renvoie une référence au noeud sur lequel se trouve le pointeur de TreeWalker. Mais, plus important encore, vous pouvez aussi affecter une référence de noeud d´arborescence de documents à cette propriété afin de définir manuellement une nouvelle position pour le pointeur. Si le noeud affecté devrait être normalement exclu de la liste par filtrage, la prochaine invocation de méthode se fait à partir de la position, comme si le noeud affecté n´était pas exclu de la liste par filtrage. |
|
Exemple | |
myTreeWalker.currentNode = document.getElementById("main"); |
|
Valeur | |
Référence à un noeud de l´arborescence de documents. |
|
Par défaut | |
Premier noeud du document. |
expandEntityReference, filter, root, whatToShow | NN 7 IE s.o DOM 2 |
Lecture seule | |
Ces quatre paramètres reflètent les valeurs de paramètres transmises à la méthode document.createTreeWalker() lors de la création de l´objet. |
firstChild(), lastChild(), nextSibling(), parentNode(), previousSibling() | NN 7 IE s.o DOM 2 |
Ces méthodes renvoient des références à des noeuds dans la hiérarchie d´éléments de l´objet TreeWalker. Les relations parent-descendant entre les noeuds sont identiques à celles des noeuds dans l´arborescence de documents. Lorsque vous invoquez l´une de ces méthodes, le pointeur interne de TreeWalker se déplace jusqu´à une position adjacente à l´emplacement du noeud dans la liste TreeWalker. Si aucun noeud ne satisfait la référence désirée, la méthode renvoie null. Cela signifie que vous devez vérifier que le noeud existe avant de lire toute propriété du noeud: if (myTreeWalker.nextSibling( )) { var theTag = myTreeWalker.currentNode.tagName; } |
|
Si vous référencez une propriété ou une référence nulle directement (myTreeWalker.nextSibling().tagName, par exemple), cela produit une erreur de référence. |
|
Paramètres | |
Aucune. |
|
Valeur renvoyée | |
Référence à un noeud de l´arborescence de documents. |
nextNode(), previousNode() | NN 7 IE s.o DOM 2 |
Déplacent le pointeur NodeIterator interne d´une position vers l´avant (nextNode()) ou vers l´arrière (previousNode()), tout en renvoyant une référence au noeud par lequel le pointeur est passé en chemin. Ces deux méthodes opèrent comme si la hiérarchie avait été aplanie (de la même façon que l´objet NodeIterator). |
|
Paramètres | |
Aucune. |
|
Valeur renvoyée | |
Référence à un noeud dans l´arborescence de documents. |