JavaScript'te Olay İşleyicilerin Optimizasyonu

Elementlere asılı aşırı sayıda işleyici, çok fazla RAM tüketir ve sayfanın takılmasına neden olur.

Bir örnek üzerinden inceleyelim. Diyelim ki bir listemiz var:

html<ul></ul>

Bu listeye bir referansı değişkene alalım:

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

Şimdi listemizi li etiketleriyle dolduralım ve üzerlerine bir tıklama işleyicisi ekleyelim:

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

Sonuçta, 1000 tane işleyicimiz oluyor. Bu çok fazla. Optimizasyon için delegasyon'u kullanarak sadece bir tane işleyiciyi ul etiketine ekleyebiliriz.

Bunu yapalım. Önce sadece liste öğelerini oluşturalım:

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

Ve şimdi olay delegasyonunu gerçekleştirelim:

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

100'e 100 boyutunda bir HTML tablosu oluşturun. Her hücrenin tıklandığında kırmızı renge boyanmasını sağlayın.