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:
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.
A propriedade length
define o número de nós em uma lista de nós:
myNodelist.length
A propriedade length
é útil quando você deseja percorrer os nós em um nó lista:
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>
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
Um NodeList geralmente é uma coleção estática. Exemplo: se você adicionar um elemento
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.
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.