Créa-blog

Ressources pour développeur web

addEventListener en Javascript pour écouter les événements

Accueil Javascript addEventListener en Javascript pour écouter les événements

L’écoute des événements est une compétence essentielle pour tout développeur JavaScript travaillant sur des interfaces utilisateur interactives. Dans ce tutoriel, nous allons explorer en détail la méthode addEventListener, qui est l’une des manières les plus courantes pour attacher des gestionnaires d’événements à des éléments du DOM.

Qu’est-ce que addEventListener ?

addEventListener est une méthode JavaScript utilisée pour attacher une fonction de gestion d’événement à un élément spécifique. Lorsque l’événement spécifié se produit sur cet élément, la fonction associée est exécutée. Cette méthode permet de gérer différents types d’événements tels que les clics, les survols de souris, les frappes de clavier, et bien d’autres encore.

Syntaxe de addEventListener

element.addEventListener(event, function, useCapture);
  • element : L’élément DOM auquel l’écouteur d’événement doit être attaché.
  • event : Une chaîne représentant le type d’événement à écouter, par exemple : click, mouseover, keydown, …
  • function : La fonction qui sera appelée lorsque l’événement spécifié se produit.
  • useCapture (optionnel) : Un booléen indiquant si l’événement doit être capturé (true) ou non (false par défaut).

Exemple de base

Commençons par un exemple simple où nous ajoutons un gestionnaire d’événement à un bouton pour écouter les clics et afficher un message lorsque le bouton est cliqué.

<body>

    <button id="myButton">Cliquez-moi</button>

    <script>
      // Sélectionner le bouton par son ID
      var button = document.getElementById('myButton');

      // Ajouter un écouteur d'événement pour le clic
      button.addEventListener('click', function() {
        alert('Bouton cliqué!');
      });
    </script>

</body>

L’élément <button> est sélectionné via document.getElementById. Un écouteur d’événement est attaché à cet élément pour écouter les clics click. Lorsque le bouton est cliqué, la fonction anonyme définie dans addEventListener est exécutée, affichant une alerte.

La fonction écrite de cette façon s’appelle une fonction anonyme ou fonction lambda. En JavaScript, une fonction anonyme est une fonction qui n’a pas de nom et est souvent utilisée comme argument dans des méthodes telles que addEventListener, setTimeout, setInterval, et d’autres fonctions de rappel…

L’exemple ci-dessus ou ci-dessous est une fonction anonyme dans un gestionnaire d’événements :

button.addEventListener('click', function() {
  alert('Bouton cliqué!');
});

Caractéristiques des Fonctions anonymes :

  • Pas de Nom : Les fonctions anonymes n’ont pas de nom. Elles sont définies là où elles sont nécessaires et sont souvent utilisées pour des tâches simples et spécifiques.
  • Scope Lexical : Les fonctions anonymes capturent le contexte d’exécution dans lequel elles sont définies, ce qui signifie qu’elles peuvent accéder aux variables définies dans leur portée englobante.
  • Usage Courant : Elles sont couramment utilisées comme gestionnaires d’événements, fonctions de rappel, et pour les opérations de tableau (par exemple : map, filter, reduce,…).

Exemple avec une fonction nommée

Pour comparaison, voici comment la même fonctionnalité peut être implémentée avec une fonction nommée :

function handleClick() {
  alert('Bouton cliqué!');
}

button.addEventListener('click', handleClick);

Dans ce cas, handleClick est une fonction nommée qui peut être réutilisée ailleurs dans le code et peut être facilement référencée pour être ajoutée ou retirée en tant que gestionnaire d’événement.

L’utilisation de fonctions anonymes dans des méthodes comme addEventListener est une pratique courante en JavaScript, en particulier pour des tâches simples et spécifiques où il n’est pas nécessaire de réutiliser la fonction ailleurs. Cependant, pour des tâches plus complexes ou pour améliorer la lisibilité et la réutilisabilité du code, il peut être préférable d’utiliser des fonctions nommées.

Exemple d’utilisation de addEventListener pour empêcher l’envoi d’un formulaire

Pour empêcher l’envoi d’un formulaire en JavaScript, vous pouvez utiliser l’événement submit associé à la méthode preventDefault(). Voici comment faire :

<form id="myForm">
  <input type="text" name="username" placeholder="Nom d'utilisateur">
  <button type="submit">Envoyer</button>
</form>

<script>
// Sélectionnez le formulaire par son ID
var form = document.getElementById('myForm');

// Ajoutez un écouteur d'événement au soumission du formulaire
form.addEventListener('submit', function(event) {
  // Empêchez le comportement par défaut de l'envoi du formulaire
  event.preventDefault();
  // Autres actions que vous souhaitez effectuer, par exemple la validation des données du formulaire
  alert('Formulaire non soumis !');
});
</script>

On sélectionne d’abord le formulaire dans le DOM en utilisant document.getElementById('myForm'), et nous le stockons dans la variable form. Ensuite, nous utilisons addEventListener pour ajouter un écouteur d’événement au formulaire pour l’événement submit. Lorsque le formulaire est soumis, cette fonction sera appelée.

Dans la fonction de gestionnaire d’événement, nous appelons event.preventDefault() pour empêcher le comportement par défaut de l’envoi du formulaire. Cela empêche le navigateur de soumettre le formulaire et de recharger la page.

Cette approche vous permet de contrôler le comportement du formulaire en JavaScript avant qu’il ne soit soumis, vous donnant la possibilité de valider les données du formulaire ou d’effectuer d’autres actions personnalisées.

Gestion des événements multiples

Vous pouvez ajouter plusieurs gestionnaires d’événements pour le même type d’événement sur un élément. Tous les gestionnaires seront appelés dans l’ordre où ils ont été ajoutés.

button.addEventListener('click', function() {
  console.log('Premier gestionnaire');
});

button.addEventListener('click', function() {
  console.log('Deuxième gestionnaire');
});

Retirer un Écouteur d’Événement

Il est également possible de retirer un écouteur d’événement à l’aide de la méthode removeEventListener. Pour ce faire, il faut que la fonction de gestion d’événement soit nommée afin de pouvoir la référencer lors de la suppression.

<button id="myButton">Cliquez-moi</button>
<button id="removeButton">Retirer l'écouteur</button>

<script>
  var button = document.getElementById('myButton');
  var removeButton = document.getElementById('removeButton');

  // Définir une fonction de gestion d'événement
  function handleClick() {
    alert('Bouton cliqué!');
  }

  // Ajouter l'écouteur d'événement avec la fonction nommée
  button.addEventListener('click', handleClick);

  // Ajouter un écouteur pour retirer l'écouteur d'événement
  removeButton.addEventListener('click', function() {
    button.removeEventListener('click', handleClick);
    alert('Écouteur retiré');
  });
</script>

La méthode addEventListener est un outil puissant pour gérer les événements en JavaScript. Elle permet non seulement de définir des interactions avec l’utilisateur, mais aussi de contrôler le comportement des événements dans l’arborescence du DOM. Que vous créiez des applications simples ou complexes, comprendre et utiliser addEventListener est essentiel pour devenir un développeur JavaScript compétent.