Optimisation des gestionnaires d'événements en JavaScript

Un nombre excessif de gestionnaires, attachés aux éléments, consomme beaucoup de mémoire vive et entraîne des ralentissements de la page.

Regardons un exemple. Supposons que nous ayons une certaine liste :

html<ul></ul>

Obtenons une référence à cette liste dans une variable :

javascriptlet ul = document.querySelector('ul');

Remplissons maintenant notre liste avec des balises li, en leur attachant un gestionnaire de clic :

javascriptfor (let i = 1; i <= 1000; i++) {
  let li = document.createElement('li');
  li.textContent = i;
  ul.append(li);
  
  li.addEventListener('click', function() {
    console.log(this.textContent);
  });
}

Au final, nous nous retrouvons avec 1000 gestionnaires. C'est énorme. Pour optimiser, nous pouvons attacher un seul gestionnaire sur la balise ul, en utilisant la délégation d'événements.

Faisons cela. Pour commencer, créons simplement les éléments de la liste :

javascriptfor (let i = 1; i <= 1000; i++) {
  let li = document.createElement('li');
  li.textContent = i;
  ul.append(li);
}

Et maintenant, mettons en place la délégation du gestionnaire d'événements :

javascriptul.addEventListener('click', function(event) {
  let li = event.target.closest('li');
  
  if (li) {
    console.log(li.textContent);
  }
});
Задание 1

Créez un tableau HTML de taille 100 sur 100. Faites en sorte que chaque cellule devienne rouge lors d'un clic.