NodeIterator#
Wstęp#
Interfejs NodeIterator stanowi definicję Web IDL dla obiektu, który spełnia rolę iteratora pozwalającego na przemieszczanie się pomiędzy węzłami spełniającymi określone cechy w danym korzeniu. Jest to kolejny sposób pozwalający na swobodne przejście przez wszystkie węzły w drzewie węzłów. Obiekty typu NodeIterator
są potocznie nazywane iteratorami węzłowymi # i skojarzone zostały z kilkoma podstawowymi zagadnieniami.
W przeszłości interfejs NodeIterator definiowany był w osobnej specyfikacji DOM Level 2 Traversal and Range (W3C). Obecnie został całkowicie przeniesiony do DOM4 z pewnymi modyfikacjami.
Iterator węzłowy odzwierciedla płaską listą węzłów, przefiltrowaną zgodnie z porządkiem drzewa. W uproszczeniu: element (element1) poprzedza kolejny element (element2) na uporządkowanej liście tylko wtedy, gdy węzeł wskazywany przez element1 poprzedza węzeł wskazywany przez element2 w drzewie węzłów. Z racji tego, że lista jest płaska, można się po niej poruszać jedynie w przód lub w tył.
Obiekt typu NodeIterator
operuje bezpośrednio na drzewie węzłów, w zasadzie to zapamiętuje on jedynie pewne kluczowe parametry (jak np. pozycję wskaźnika czy węzeł referencyjny), dlatego każda zmiana węzła w takim drzewie może mieć wpływ na stan iteratora. Uwaga będzie istotna szczególnie w przypadku usuwania węzłów z kolekcji iteratora.
Interfejs NodeIterator 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.
Iterator węzłowy można utworzyć za pomocą metody:
Właściwości NodeIterator#
Nazwa | Opis |
---|---|
NodeIterator.filter | Zwraca filtr skojarzony z danym iteratorem węzłowym. |
NodeIterator.pointerBeforeReferenceNode | Zwraca wartość true jeśli pozycja wskaźnika znajduje się przed węzłem referencyjnym w danym iteratorze węzłowym, w przeciwnym razie wartość false . |
NodeIterator.referenceNode | Zwraca węzeł referencyjny w danym iteratorze węzłowym. |
NodeIterator.root | Zwraca korzeń skojarzony z danym iteratorem węzłowym. |
NodeIterator.whatToShow | Zwraca maskę bitową skojarzoną z danym iteratorem węzłowym. |
Metody NodeIterator#
Nazwa | Opis |
---|---|
NodeIterator.detach() | Nie robi niczego sensownego. |
NodeIterator.nextNode() | Zwraca węzeł następujący względem węzła referencyjnego w danym iteratorze węzłowym, który spełnia kryteria filtracji. |
NodeIterator.previousNode() | Zwraca węzeł poprzedzający względem węzła referencyjnego w danym iteratorze węzłowym, który spełnia kryteria filtracji. |
Składnia Web IDL#
interface NodeIterator # { [SameObject] readonly attribute Node root; readonly attribute Node referenceNode; readonly attribute boolean pointerBeforeReferenceNode; readonly attribute unsigned long whatToShow; readonly attribute NodeFilter? filter; Node? nextNode(); Node? previousNode(); void detach(); };