document.querySelectorAll()

Renvoie une liste statique (NodeList) de tous les éléments qui correspondent à un sélecteur CSS.

Renvoie
Une liste statique NodeList avec les éléments correspondants (elle peut être vide).
Sur cette page

Exemple

#
JavaScript
const lessons = document.querySelectorAll('.lesson')
console.log(lessons.length)

lessons.forEach((lesson, index) => {
  console.log(`${index + 1}. ${lesson.textContent}`)
})

const done = [...document.querySelectorAll('.lesson.done')].map((li) => li.textContent)
console.log(done)
Console
3
1. Introduction
2. Balises
3. Attributs
['Balises', 'Attributs']

Définition et utilisation

#

La méthode querySelectorAll() fonctionne comme querySelector(), mais renvoie tous les éléments correspondants, dans l’ordre où ils apparaissent dans le document. Le résultat est un objet NodeList, qui a une propriété length, un accès par indice (list[0]) et une méthode forEach().

NodeList n’est pas un tableau : il lui manque les méthodes map(), filter() ou reduce(). Vous le transformez en tableau avec Array.from(list) ou [...list]. Si rien ne correspond, vous obtenez une liste vide de longueur 0, et non null.

La liste est statique, c’est-à-dire que c’est une « photo » du document prise au moment de l’appel. Les éléments ajoutés plus tard n’y apparaissent pas d’eux-mêmes, et supprimer des éléments pendant le parcours de la liste est sûr.

Syntaxe

#
Syntaxe
document.querySelectorAll(selectors)
element.querySelectorAll(selectors)

Paramètres

#
  • selectors

    chaîne

    Un sélecteur CSS. Séparez plusieurs sélecteurs par des virgules.

Plus d’exemples

#
Somme des prix d’une liste
JavaScript
const items = document.querySelectorAll('li[data-price]')

const total = Array.from(items).reduce((sum, item) => sum + Number(item.dataset.price), 0)
console.log(`Total : ${total} €`)
Console
Total : 187 €
La liste ne se met pas à jour toute seule
JavaScript
const list = document.querySelector('#list')
const items = list.querySelectorAll('li')

list.append(document.createElement('li'))

console.log(items.length)
console.log(list.querySelectorAll('li').length)
console.log(list.children.length)
Console
2
3
3

items a gardé en mémoire l’état d’avant l’ajout de l’élément. La propriété children, elle, est une collection « vivante » qui montre toujours les enfants actuels.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Besoin de map() ou de filter() ? Transformez le résultat en tableau : [...document.querySelectorAll(".card")].
  • Ne testez pas le résultat avec if (list). Une liste vide est aussi un objet, donc vérifiez list.length.
  • Après l’ajout de nouveaux éléments, appelez à nouveau la méthode, car une liste récupérée plus tôt ne change pas.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.