⊗jsPmOENEH 430 of 505 menu

JavaScript-ում նոր տարրերի իրադարձությունների մշակման կցում

Ենթադրենք ունենք ul ցուցակ և կոճակ.

<ul> <li>տարր</li> <li>տարր</li> <li>տարր</li> <li>տարր</li> <li>տարր</li> </ul> <button>ավելացնել</button>

Ստացնենք մեր տարրերը համապատասխան փոփոխականներում.

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

Եկեք կատարենք, որ ցանկացած li-ի վրա կտտացնելիս դրա վերջում ավելանա բացականչական նշան.

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

Եկեք հիմա կատարենք, որ կոճակի վրա սեղմելիս ցուցակի վերջում ավելանա նոր li.

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

Սակայն մենք կստանանք խնդիր. նոր ավելացված li-ի վրա կտտացնելը չի հանգեցնի բացականչական նշանի ավելացմանը դրա վերջում: Բանն այն է, որ մենք ավելացնում ենք կտտացման մշակիչ միայն այն li-ների համար, որոնք գոյություն ունեին սկզբնապես, բայց ոչ նորերի համար:

Ուղղենք խնդիրը՝ նոր li-ի վրա ավելացնելով կտտացման մշակիչ.

button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'տարր'; item.addEventListener('click', function() { // կտտացման մշակիչ this.textContent = this.textContent + '!'; }); list.appendChild(item); });

Սակայն, հիմա մշակիչ-ֆունկցիայի կոդը կրկնօրինակվում է երկու տեղում՝ սկզբնապես գոյություն ունեցող li-ների և նորերի համար: Ուղղենք սա՝ այն հանելով առանձին ֆունկցիայի մեջ.

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

Օգտագործենք մեր ֆունկցիան՝ կոդի կրկնօրինակումից խուսափելու համար.

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

Խնդիրը ընդհանուր առմամբ լուծված է, և մենք խուսափեցինք մշակիչ-ֆունկցիայի կոդի կրկնօրինակումից: Սակայն, իրադարձությունների մշակիչների ավելացումը մենք դեռ ստիպված ենք կատարել երկու տեղում. և ցիկլում գոյություն ունեցող li-ների համար, և կոճակի վրա կտտացնելիս: Հաջորդ դասում մենք կքննարկենք այս անհարմարությունից ազատվելու միջոցը:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել