ComparaisonComparaisons

querySelector() vs getElementById()

querySelector() accepte tout sélecteur CSS et renvoie le premier élément correspondant ; getElementById() cherche seulement par l’attribut id, mais est plus simple.

Sur cette page

Comparaison point par point

#

Exemple

#
JavaScript
const byId = document.getElementById('task-2')
const bySelector = document.querySelector('#task-2')
const byClass = document.querySelector('.task:not(.done)')

console.log(byId === bySelector)
console.log(byClass.textContent)
console.log(document.getElementById('task-3'))
Console
true
CSS
null

Définition et utilisation

#

Les deux méthodes renvoient le premier élément correspondant, ou null si elles ne trouvent rien, et toutes deux lisent le document existant sans créer de nouveaux éléments. Ce qui les distingue, c’est ce qu’elles recherchent. querySelector() accepte n’importe quel sélecteur CSS, comme ".card", "nav a" ou "input[type=email]". getElementById() accepte seulement la valeur de l’attribut id, sans le caractère #, car ce n’est pas un sélecteur CSS.

Vous pouvez appeler querySelector() non seulement sur document, mais aussi sur n’importe quel élément, et elle cherche alors seulement à l’intérieur de celui-ci. getElementById() ne fonctionne que sur document. La recherche par id est d’ailleurs l’opération la plus rapide du DOM, car le navigateur peut accéder directement à l’élément, sans analyser de sélecteur.

Vous avez un identifiant simple, connu à l’avance, et vous cherchez dans tout le document ? getElementById() est plus simple et plus rapide. Vous avez besoin d’une classe, d’un attribut, d’un sélecteur imbriqué, ou de chercher à l’intérieur d’un élément précis ? Utilisez querySelector().

Syntaxe

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

document.getElementById(id)

Plus d’exemples

#
getElementById() ne fonctionne que sur document
JavaScript
const card = document.querySelector('#html-course')
const price = card.querySelector('.price')

console.log(price.textContent)
console.log(typeof card.getElementById)
Console
49 €
undefined

Un élément n’a pas de méthode getElementById(), seul document l’a. En cherchant à l’intérieur d’un élément précis, utilisez toujours querySelector() ou querySelectorAll().

Les deux méthodes distinguent les majuscules et minuscules
JavaScript
console.log(document.getElementById('Submit-Btn')?.textContent)
console.log(document.getElementById('submit-btn'))
console.log(document.querySelector('#Submit-Btn')?.textContent)
Console
Envoyer
null
Envoyer

Bonnes pratiques

#
  • Vous avez un id simple et unique ? getElementById() est la solution la plus rapide et la plus lisible.
  • Vous avez besoin de chercher seulement à l’intérieur d’un élément précis ? Appelez querySelector() sur cet élément, pas sur document. Ce n’est pas possible avec getElementById().
  • Vérifiez le résultat avant de l’utiliser, ou utilisez ?.. Les deux méthodes renvoient null quand elles ne trouvent rien.

Entrées associées

#

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