Optimalizace obslužných rutin událostí v JavaScriptu

Příliš mnoho obslužných rutin, připojených k prvkům, spotřebovává hodně operační paměti a vede k zasekávání stránky.

Podívejme se na příklad. Předpokládejme, že máme nějaký seznam:

html<ul></ul>

Získáme odkaz na tento seznam do proměnné:

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

Nyní naplníme náš seznam tagy li, a připojíme k nim obslužnou rutinu kliknutí:

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

Výsledkem je, že máme 1000 obslužných rutin. To je velmi mnoho. Pro optimalizaci můžeme připojit pouze jednu obslužnou rutinu k tagu ul, pomocí delegování událostí.

Pojďme to udělat. Nejprve jednoduše vytvořme položky seznamu:

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

A nyní provedeme delegování obslužné rutiny událostí:

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

Vytvořte HTML tabulku o velikosti 100 na 100. Zařiďte, aby se každá buňka po kliknutí obarvila na červenou.