⊗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हिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა