EventTarget.addEventListener()

Enregistre une fonction appelée à chaque fois qu’un événement se produit sur un élément, par ex. un clic.

Renvoie
undefined
Sur cette page

Exemple

#
JavaScript
const button = document.querySelector('#like')
let likes = 0

button.addEventListener('click', () => {
  likes += 1
  button.textContent = `J’aime : ${likes}`
  console.log('Clic, j’aime :', likes)
})

button.click()
button.click()
Console
Clic, j’aime : 1
Clic, j’aime : 2

Les deux dernières lignes simulent des clics avec button.click(), pour que le résultat apparaisse immédiatement. Cliquez sur le bouton dans l’aperçu, et la console affichera d’autres entrées.

Définition et utilisation

#

La méthode addEventListener() relie un événement à une fonction de gestion. Le premier argument est le type d’événement (par ex. "click", "input", "submit", "keydown"), et le second une fonction qui reçoit un objet événement avec des informations sur ce qui s’est passé.

Vous pouvez enregistrer plusieurs fonctions pour le même événement sur un seul élément. Elles s’exécutent dans l’ordre d’ajout. La méthode fonctionne sur les éléments, mais aussi sur document et window, par ex. pour gérer des raccourcis clavier ou un changement de taille de la fenêtre.

Le troisième argument est un objet d’options : once: true retire l’écouteur après le premier déclenchement, passive: true indique au navigateur que la fonction ne bloquera pas le défilement, et signal permet de détacher l’écouteur via un AbortController. Vous pouvez aussi retirer un écouteur avec removeEventListener(), mais vous devez lui passer exactement la même fonction, donc une fonction anonyme ne convient pas pour cela.

Syntaxe

#
Syntaxe
target.addEventListener(type, listener)
target.addEventListener(type, listener, options)

target.removeEventListener(type, listener)

Paramètres

#
  • type

    chaîne

    Le type d’événement, par ex. "click", "input", "submit" ou "keydown". Sans le préfixe on.
  • listener

    function (event)

    La fonction appelée à chaque déclenchement de l’événement. Elle reçoit l’objet événement.
  • options

    objet, optionnel

    Les réglages : once, passive, capture et signal.

Plus d’exemples

#
Un déclenchement unique
JavaScript
const bonus = document.querySelector('#bonus')

bonus.addEventListener('click', () => console.log('Bonus récupéré : +50 pièces'), { once: true })

bonus.click()
bonus.click()
Console
Bonus récupéré : +50 pièces
L’événement input dans un champ de texte
JavaScript
const input = document.querySelector('#nick')

input.addEventListener('input', (event) => {
  console.log(`Saisi : ${event.target.value}`)
})

input.value = 'Léa'
input.dispatchEvent(new Event('input'))
Console
Saisi : Léa

L’événement input apparaît à chaque changement du contenu du champ. Ici, nous le déclenchons manuellement avec dispatchEvent(), et si vous tapez quelque chose dans le champ de l’aperçu, la console affichera les valeurs successives.

Retirer un écouteur
JavaScript
const button = document.querySelector('#hint')
let used = 0

function showHint() {
  used += 1
  console.log(`Indice ${used} sur 2`)
  if (used === 2) button.removeEventListener('click', showHint)
}

button.addEventListener('click', showHint)

button.click()
button.click()
button.click()
Console
Indice 1 sur 2
Indice 2 sur 2

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

#
  • Passez une fonction, pas son résultat : addEventListener("click", save), et non addEventListener("click", save()).
  • Plutôt que d’ajouter un écouteur à chacun de plusieurs éléments, ajoutez-en un seul à leur parent commun et vérifiez event.target. C’est ce qu’on appelle la délégation d’événements.
  • Si vous prévoyez de retirer l’écouteur, enregistrez la fonction dans une variable. removeEventListener() a besoin exactement de la même fonction.

Entrées associées

#

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