DOM ელემენტების მიღება დუბლიკატების გარეშე

დავუშვათ, გვაქვს პარაგრაფები და ღილაკი:

html<p>aaa</p>
<p>bbb</p>
<p>ccc</p>
<p>ddd</p>
<p>eee</p>

<button>click me</button>

დავუშვათ მომხმარებელი აწკაპუნებს ამ პარაგრაფებზე თვითნებური თანმიმდევრობით. მოდით, გავაკეთოთ ისე, რომ ღილაკზე დაჭერისას ყოველი პარაგრაფის ბოლოს, რომელზეც მოხდა დაწკაპუნება, დაემატოს ძახილის ნიშანი. მოვაგვაროთ ამოცანა Set-ის მეშვეობით.

დავიწყოთ. პირველ რიგში, მივიღოთ ჩვენი ელემენტები ცვლადებში:

javascriptlet button = document.querySelector('button');
let elems  = document.querySelectorAll('p');

შევქმნათ ახალი კოლექცია Set:

javascriptlet set = new Set;

ციკლით გადავუყვეთ პარაგრაფებს და დავამატოთ მათზე დაწკაპუნების დამმუშავებელი:

javascriptfor (let elem of elems) {
  elem.addEventListener('click', function() {
    
  });
}

მოდით ახლა პარაგრაფზე დაწკაპუნებისას დავამატოთ ეს პარაგრაფი კოლექციაში:

javascriptfor (let elem of elems) {
  elem.addEventListener('click', function() {
    set.add(this);
  });
}

იმის გამო, რომ ჩვენ ვიყენებთ კოლექციას Set, პარაგრაფზე განმეორებითი დაწკაპუნება არ გამოიწვევს პარაგრაფის დუბლიკატის დამატებას.

მოდით ახლა ღილაკზე დაჭერისას გადავუყვეთ ჩვენი კოლექციის შიგთავსს და ყოველ პარაგრაფს დავამატოთ ძახილის ნიშანი:

javascriptbutton.addEventListener('click', function() {
  for (let elem of set) {
    elem.textContent = elem.textContent + '!';
  }
});
Задание 1

მოცემულია პარაგრაფები და ღილაკი. მომხმარებელი აწკაპუნებს ამ პარაგრაფებზე თვითნებური თანმიმდევრობით. გახსენით ისე, რომ ღილაკზე დაჭერისას ყოველი პარაგრაფის ბოლოს, რომელზეც მოხდა დაწკაპუნება, დაემატოს ძახილის ნიშანი.