Notikumu apstrādātāju optimizācija JavaScript

Pārāk daudz notikumu apstrādātāju, kas pievienoti elementiem, aizņem daudz operatīvās atmiņas un noved pie lapas aizķeršanās.

Apskatīsim to ar piemēru. Pieņemsim, ka mums ir kāds saraksts:

html<ul></ul>

Iegūsim atsauci uz šo sarakstu mainīgajā:

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

Aizpildīsim tagad mūsu sarakstu ar tagiem li, pievienojot tiem klikšķa notikuma apstrādātāju:

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);
  });
}

Rezultātā mums ir 1000 notikumu apstrādātāji. Tas ir ļoti daudz. Optimizēšanai mēs varam pievienot tikai vienu notikumu apstrādātāju tagam ul, izmantojot deleģēšanu.

Izdarīsim to. Vispirms vienkārši izveidosim saraksta punktus:

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

Un tagad izveidosim notikumu deleģēšanu:

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

Izveidojiet HTML tabulu ar izmēru 100 uz 100. Iestatiet to tā, lai katra šūna pēc noklikšķināšanas iekrāsotos sarkanā krāsā.