⊗jsPmOENEH 430 of 505 menu

Naujų elementų apdorojimo programų pridėjimas JavaScript

Tarkime, kad turime ul sąrašą ir mygtuką:

<ul> <li>elementas</li> <li>elementas</li> <li>elementas</li> <li>elementas</li> <li>elementas</li> </ul> <button>pridėti</button>

Gaukime savo elementus į atitinkamus kintamuosius:

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

Padarykime taip, kad paspaudus bet kurį li prie jo galo būtų pridėtas šauktukas:

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

Dabar padarykime taip, kad paspaudus mygtuką į sąrašo galą būtų pridėtas naujas li:

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

Tačiau mes susidursime su problema: paspaudimas į naujai pridėtą li nesukels šauktuko pridėjimo prie galo. Esmė ta, kad mes pridedame paspaudimo apdorojimo programą tik tiems li, kurie egzistavo iš pradžių, bet ne naujiems.

Išspręskime problemą, pridėdami prie naujo li paspaudimo apdorojimo programą:

button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'elementas'; item.addEventListener('click', function() { // paspaudimo apdorojimo programa this.textContent = this.textContent + '!'; }); list.appendChild(item); });

Tačiau dabar apdorojimo programos funkcijos kodas dubliuojasi dviejose vietose - iš pradžių egzistuojantiems li ir naujiems. Išspręskime tai, išskirdami jį į atskirą funkciją:

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

Naudokimės mūsų funkcija, kad išvengtume kodo dubliavimo:

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

Iš esmės problema išspręsta ir išvengėme apdorojimo programos funkcijos kodo dubliavimo. Tačiau, pridėti įvykių apdorojimo programas mums vis tiek tenka dviejose vietose: ir cikle egzistuojantiems li, ir paspaudus mygtuką. Kitoje pamokoje mes išnagrinėsime būdą, kaip atsikratyti šio nepatogumo.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti