JavaScript DOM Nodelist


Obsah

    Zobrazit obsah


Objekt HTML DOM NodeList

Objekt NodeList je seznam (sbírka) uzlů extrahovaných z dokument.

Objekt NodeList je téměř stejný jako objekt HTMLCollection.

Některé (starší) prohlížeče vracejí místo HTMLCollection objekt NodeList pro metody jako getElementsByClassName().

Všechny prohlížeče vrátí objekt NodeList pro vlastnost childNodes.

Většina prohlížečů vrací objekt NodeList pro metodu querySelectorAll().

Následující kód vybere všechny uzly <p> v dokumentu:

Příklad

const myNodeList = document.querySelectorAll("p");

K prvkům v seznamu NodeList lze přistupovat pomocí indexového čísla.

Pro přístup k druhý uzel <p> můžete napsat:

myNodeList[1]

Poznámka: Index začíná na 0.


Délka seznamu uzlů HTML DOM

Vlastnost length definuje počet uzlů v seznamu uzlů:

Příklad

myNodelist.length

Vlastnost length je užitečná, když chcete procházet uzly v uzlu seznam:

Příklad

Změňte barvu všech prvků <p> v uzlu seznam:

const myNodelist = document.querySelectorAll("p");
for (let i = 0; i < myNodelist.length; i++) {
  myNodelist[i].style.color = "red";
}

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript HTML DOM</h2>

<p>Hello World!</p>

<p>Hello Norway!</p>

<p>Click the button to change the color of all p elements.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
  const myNodelist = document.querySelectorAll("p");
  for (let i = 0; i < myNodelist.length; i++) {
    myNodelist[i].style.color = "red";
  }
}
</script>

</body>
</html>


Rozdíl mezi HTMLCollection a NodeList

NodeList a HTMLcollection jsou v podstatě to samé.

Oba jsou kolekce (seznamy) uzlů (prvků) extrahované z a dokument. K uzlům lze přistupovat pomocí indexových čísel. Index začíná na 0.

Oba mají vlastnost length, která vrací počet prvků v seznamu (kolekci).

HTMLCollection je kolekce prvků dokumentu.

NodeList je kolekce uzlů dokumentu (uzly prvků, uzly atributů a uzly textu).

K položkám HTMLCollection lze přistupovat pomocí jejich názvu, ID nebo čísla indexu.

K položkám NodeList lze přistupovat pouze podle jejich indexového čísla.

HTMLCollection je vždy živá kolekce. Příklad: Pokud do seznamu v DOM přidáte prvek

  • , změní se také seznam v HTMLCollection.

    NodeList je nejčastěji statická kolekce. Příklad: Pokud přidáte prvek

  • do seznamu v DOM, seznam v NodeList se nezmění.

    getElementsByClassName() a getElementsByTagName() metody vracejí živou kolekci HTML.

    Metoda querySelectorAll() vrací statický seznam NodeList.

    Vlastnost childNodes vrací aktivní seznam NodeList.


    Ne pole!

    NodeList může vypadat jako pole, ale není.

    Můžete procházet seznam NodeList a odkazovat na jeho uzly podle indexu.

    Ale nemůžete použít metody Array jako push(), pop() nebo join() na NodeList.