TreeWalker#
Wstęp#
Interfejs TreeWalker stanowi definicję Web IDL dla obiektu, który pozwala na przemieszczanie się pomiędzy węzłami spełniającymi określone cechy w danym drzewie węzłów. Jest to kolejny sposób pozwalający na swobodne przejście przez wszystkie węzły w drzewie węzłów. Obiekty typu TreeWalker
są potocznie nazywane przemierzaczami drzewa # i skojarzone zostały z kilkoma podstawowymi zagadnieniami.
W przeszłości interfejs TreeWalker definiowany był w osobnej specyfikacji DOM Level 2 Traversal and Range (W3C). Obecnie został całkowicie przeniesiony do DOM4 z pewnymi modyfikacjami.
Przemierzacz drzewa jest odzwierciedleniem nowego drzewa węzłów, z węzłami przefiltrowanymi zgodnie z porządkiem drzewa. Z racji tego, że mamy tutaj do czynienia z drzewem, możemy się poruszać w przód, w tył, wybierać rodzica, dziecko, brata następującego lub brata poprzedzającego.
Obiekt typu TreeWalker
operuje bezpośrednio na drzewie węzłów, w zasadzie to zapamiętuje on jedynie pewne kluczowe parametry (jak np. bieżący węzeł), ale w przeciwieństwie do iteratora węzłowego jest on bardziej odporny na zmiany związane z dodawaniem lub usuwaniem węzłów (szczegóły).
Interfejs TreeWalker nie dziedziczy z żadnego innego interfejsu w ogólnym ujęciu DOM, chociaż w środowisku JS obiekty implementujące ten interfejs będą dziedziczyły z prototypu najwyższego rzędu. Zachowanie takie jest czymś normalnym w przypadku języka ECMAScript.
Przemierzacz drzewa można utworzyć za pomocą metody:
Właściwości NodeIterator#
Nazwa | Opis |
---|---|
TreeWalker.currentNode | Zwraca lub ustawia bieżący węzeł w danym przemierzaczu drzewa. |
TreeWalker.filter | Zwraca filtr skojarzony z danym przemierzaczem drzewa. |
TreeWalker.root | Zwraca korzeń skojarzony z danym przemierzaczem drzewa. |
TreeWalker.whatToShow | Zwraca maskę bitową skojarzoną z danym przemierzaczem drzewa. |
Metody NodeIterator#
Nazwa | Opis |
---|---|
TreeWalker.firstChild() | Zwraca pierwsze dziecko względem bieżącego węzła w danym przemierzaczu drzewa, które spełnia kryteria filtracji. |
TreeWalker.lastChild() | Zwraca ostatnie dziecko względem bieżącego węzła w danym przemierzaczu drzewa, które spełnia kryteria filtracji. |
TreeWalker.nextNode() | Zwraca węzeł następujący względem bieżącego węzła w danym przemierzaczu drzewa, który spełnia kryteria filtracji. |
TreeWalker.nextSibling() | Zwraca brata następującego względem bieżącego węzła w danym przemierzaczu drzewa, który spełnia kryteria filtracji. |
TreeWalker.parentNode() | Zwraca przodka względem bieżącego węzła w danym przemierzaczu drzewa, który spełnia kryteria filtracji. |
TreeWalker.previousNode() | Zwraca węzeł poprzedzający względem bieżącego węzła w danym przemierzaczu drzewa, który spełnia kryteria filtracji. |
TreeWalker.previousSibling() | Zwraca brata poprzedzającego względem bieżącego węzła w danym przemierzaczu drzewa, który spełnia kryteria filtracji. |
Składnia Web IDL#
interface TreeWalker # [SameObject] readonly attribute Node root; readonly attribute unsigned long whatToShow; readonly attribute NodeFilter? filter; attribute Node currentNode; Node? parentNode(); Node? firstChild(); Node? lastChild(); Node? previousSibling(); Node? nextSibling(); Node? previousNode(); Node? nextNode(); };