Lista de nós DOM JavaScript


Índice

    Mostrar índice


O objeto HTML DOM NodeList

Um objeto NodeList é uma lista (coleção) de nós extraídos de um documento.

Um objeto NodeList é quase igual a um objeto HTMLCollection.

Alguns navegadores (mais antigos) retornam um objeto NodeList em vez de um HTMLCollection para métodos como getElementsByClassName().

Todos os navegadores retornam um objeto NodeList para a propriedade childNodes.

A maioria dos navegadores retorna um objeto NodeList para o método querySelectorAll().

O código a seguir seleciona todos os nós <p> em um documento:

Exemplo

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

Os elementos do NodeList podem ser acessados por um número de índice.

Para acessar o segundo nó <p> você pode escrever:

myNodeList[1]

Nota: O índice começa em 0.


Comprimento da lista de nós HTML DOM

A propriedade length define o número de nós em uma lista de nós:

Exemplo

myNodelist.length

A propriedade length é útil quando você deseja percorrer os nós em um nó lista:

Exemplo

Alterar a cor de todos os elementos <p> em um nó lista:

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

Experimente você mesmo →

<!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>


A diferença entre um HTMLCollection e um NodeList

Um NodeList e um HTMLcollection são praticamente a mesma coisa.

Ambos são coleções semelhantes a arrays (listas) de nós (elementos) extraídos de um documento. Os nós podem ser acessados por números de índice. O índice começa em 0.

Ambos possuem uma propriedade length que retorna o número de elementos da lista (coleção).

Uma HTMLCollection é uma coleção de elementos de documento.

Uma NodeList é uma coleção de nós de documentos (nós de elementos, nós de atributos e nós de texto).

Os itens HTMLCollection podem ser acessados por seu nome, id ou número de índice.

Os itens do NodeList só podem ser acessados pelo seu número de índice.

Uma HTMLCollection é sempre uma coleção ativa. Exemplo: se você adicionar um elemento

  • a uma lista no DOM, a lista no HTMLCollection também será alterada.

    Um NodeList geralmente é uma coleção estática. Exemplo: se você adicionar um elemento

  • a uma lista no DOM, a lista em NodeList não será alterada.

    O getElementsByClassName() e getElementsByTagName() métodos retornam um HTMLCollection ativo.

    O método querySelectorAll() retorna um NodeList estático.

    A propriedade childNodes retorna um NodeList ativo.


    Não é uma matriz!

    Um NodeList pode parecer um array, mas não é.

    Você pode percorrer um NodeList e consultar seus nós por índice.

    Porém, você não pode usar métodos Array como push(), pop() ou join() em um NodeList.