⊗jsPmOENEH 430 of 505 menu

JavaScript'te Yeni Öğelere Olay İşleyicileri Eklemek

Bir ul listemiz ve bir butonumuz olduğunu varsayalım:

<ul> <li>item</li> <li>item</li> <li>item</li> <li>item</li> <li>item</li> </ul> <button>add</button>

Öğelerimizi ilgili değişkenlere alalım:

let button = document.querySelector('button'); let list = document.querySelector('ul'); let items = list.querySelectorAll('li');

Herhangi bir li'ye tıklandığında sonuna bir ünlem işareti eklenmesini sağlayalım:

for (let item of items) { item.addEventListener('click', function() { this.textContent = this.textContent + '!'; }); }

Şimdi butona basıldığında listenin sonuna yeni bir li eklenmesini sağlayalım:

button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'item'; list.appendChild(item); });

Ancak bir sorunla karşılaşacağız: Yeni eklenen bir li'ye tıklamak, sonuna ünlem işareti eklenmesine yol açmayacak. Sebebi şu: click olay işleyicisini sadece başlangıçta var olan li öğelerine ekledik, ama yeni olanlara eklemedik.

Sorunu, yeni li öğesine bir click olay işleyicisi ekleyerek düzeltelim:

button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'item'; item.addEventListener('click', function() { // click olay işleyicisi this.textContent = this.textContent + '!'; }); list.appendChild(item); });

Ancak şimdi, olay işleyici fonksiyonunun kodu iki yerde yineleniyor - başlangıçta var olan li öğeleri ve yeni olanlar için. Bunu, kodu ayrı bir fonksiyona alarak düzeltelim:

function handler() { this.textContent = this.textContent + '!'; }

Kod tekrarından kaçınmak için fonksiyonumuzu kullanalım:

for (let item of items) { item.addEventListener('click', handler); } button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'item'; item.addEventListener('click', handler); list.appendChild(item); });

Problem genel olarak çözüldü ve olay işleyici fonksiyonunun kod tekrarından kaçındık. Ancak, olay işleyicilerini eklemek yine de iki yerde yapmamız gerekiyor: hem mevcut li öğeleri için döngüde, hem de butona tıklandığında. Bir sonraki derste, bu rahatsızlıktan kurtulmanın bir yolunu inceleyeceğiz.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet