DOM elementide hankimine ilma duplikaatideta

Oletame, et meil on lõigud ja nupp:

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

<button>click me</button>

Oletame, et kasutaja klõpsab neil lõikudel suvalises järjekorras. Teeme nii, et nupu vajutamisel iga lõigu lõppu, millele on klõpsatud, lisatakse hüüumärk. Lahendame ülesande läbi Set.

Alustame. Kõigepealt hankige meie elemendid muutujatesse:

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

Loome uue kollektsiooni Set:

javascriptlet set = new Set;

Läbime lõigud tsükliga ja paneme neile klõpsuhalduri:

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

Klõpsake nüüd lõigul, lisame selle kollektsiooni:

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

Tänu sellele, et me kasutame kollektsiooni Set korduv klõps lõigul ei too kaasa lõigu duplikaadi lisamist.

Klõpsake nüüd nupul, läbime meie kollektsiooni sisu ja igale lõigule lõppu lisame hüüumärgi:

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

Antud on lõigud ja nupp. Kasutaja klõpsab neil lõikudel suvalises järjekorras. Tehke nii, et nupu vajutamisel iga lõigu lõppu, millele on klõpsatud, lisatakse hüüumärk.