⊗jsPmOENEH 430 of 505 menu

Vendosja e përpunuesve në elementët e rinj në JavaScript

Le të themi se kemi një listë ul dhe një buton:

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

Le të marrim elementët tanë në variablat përkatëse:

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

Le të bëjmë që me klikim në çdo li asaj t'i shtohet një pikëçuditëse në fund:

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

Tani le të bëjmë që me shtypje të butonit në fund të listës të shtohet një li e re:

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

Sidoqoftë, ne do të hasim një problem: klikimi në li të re të shtuar nuk do të çojë në shtimin e një pikëçuditëse në fund. Çështja është se ne shtojmë një përpunues klikimi vetëm për ato li që ekzistonin fillimisht, por jo për ato të reja.

Le ta rregullojmë problemin duke vendosur në li të re një përpunues klikimi:

button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'item'; item.addEventListener('click', function() { // përpunues klikimi this.textContent = this.textContent + '!'; }); list.appendChild(item); });

Sidoqoftë, tani kodi i funksionit-përpunues dublikohet në dy vende - për li që ekzistonin fillimisht dhe për ato të reja. Le ta rregullojmë këtë duke e nxjerrë atë në një funksion të veçantë:

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

Le të përdorim funksionin tonë për të shmangur dublimin e kodit:

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

Në përgjithësi problemi është zgjidhur dhe kemi shmangur dublimin e kodit të funksionit-përpunues. Sidoqoftë, vendosja e përpunuesve të ngjarjeve na duhet të bëhet në dy vende: si në cikël për li ekzistuese, ashtu edhe në klikimin e butonit. Në mësimin vijues do të shqyrtojmë një mënyrë për të hequr qafe këtë shqetësim.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo