DOM TreeWalker API

A TreeWalker API: Hatékony eszköz a DOM-fa bejárására.

A DOM TreeWalker API

A TreeWalker API lehetővé teszi a fejlesztők számára, hogy létrehozzanak egy treeWalker objektumot, amely felhasználható a DOM fa bejárására. A treeWalker számos módszerrel rendelkezik, amelyek segítségével mozgatható a treeWalker aktuális pozíciója a DOM-fán belül, valamint az aktuális csomóponttal kapcsolatos információk visszaadására.

A TreeWalker API egy hatékony eszköz a DOM-fa bejárására. Ezzel könnyedén mozoghat a fában, és információkat kaphat a talált csomópontokról. Az API számos kényelmi módszert is biztosít a gyakori műveletekhez, például egy csomópont következő vagy előző testvérének beszerzéséhez, vagy a szülőcsomópont beszerzéséhez.

Példák a TreeWalker API használatára

var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW_ELEMENT,
  { acceptNode: function(node) {
      return node.tagName === 'DIV' ?
        NodeFilter.FILTER_ACCEPT :
        NodeFilter.FILTER_SKIP;
  }},
  false
);

while(treeWalker.nextNode()) {
  console.log(treeWalker.currentNode.tagName);
}

A fenti kód létrehoz egy TreeWalker-t, amelyet azután a DOM-fa bejárására használnak. A TreeWalker csak olyan csomópontokat fogad el, amelyek DIV elemek, ezért átugorja a többi típusú csomópontot. Ahogy áthalad a fán, kiírja minden egyes talált DIV csomópont címkenevét. Ez egy hasznos módja annak, hogy megtalálja az összes DIV elemet a dokumentumban.

var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW_ELEMENT,
  { acceptNode: function(node) {
      // Check if the node is a DIV, and if it has the "my-class" class.
      return node.tagName === 'DIV' && node.classList.contains('my-class') ?
        NodeFilter.FILTER_ACCEPT :
        NodeFilter.FILTER_SKIP;
  }},
  false
);

while(treeWalker.nextNode()) {
  // Do something with the node, such as add a border.
  treeWalker.currentNode.style.border = '1px solid black';
}

A fenti kód ugyanazt teszi, mint az előző példa, de csak azokat a DIV csomópontokat fogadja el, amelyek a "my-class" osztályúak. Ha találkozik egy ilyen csomóponttal, egy 1 képpontos fekete keretet ad hozzá. Ez csak egy egyszerű példa arra, hogy mit tehet a TreeWalker API-val.

(Majdnem) teljesen zöld

A TreeWalker API használata során az egyik kihívás az, hogy könnyen elveszíthetjük az aktuális csomópontot. Ennek az az oka, hogy az API nem biztosít módszert egy adott csomópont megtalálásához. Ehelyett a fa körüli mozgás módszereit kell használnia, ami trükkös lehet. Egy másik kihívás, hogy az API-t nem nagyon támogatják a böngészők, ezért előfordulhat, hogy polifilt kell használni.

Összegzés

A TreeWalker API egy hatékony eszköz a DOM-fa bejárására. Számos módszert biztosít a fában való mozgáshoz, valamint az aktuális csomóponttal kapcsolatos információk megszerzéséhez. Az API néhány kényelmi módszert is biztosít a gyakori műveletekhez. Az API használata azonban kihívást jelenthet, és a böngészők nem támogatják megfelelően.

További érdekes API-k, amelyek a DOM adatlekéréshez kapcsolódnak, a következők, amelyekre a jövőben talán kitérek.

  • A DOM Range API
  • A DOM NodeIterator API