DOM elemek lekérése duplikátumok nélkül

Tegyük fel, hogy vannak bekezdéseink és egy gombunk:

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

<button>click me</button>

Tegyük fel, hogy a felhasználó ezekre a bekezdésekre kattint tetszőleges sorrendben. Tegyük úgy, hogy a gomb megnyomására minden egyes bekezdés végére, amire kattintás történt, hozzáadódjon egy felkiáltójel. Oldjuk meg a feladatot Set segítségével.

Kezdjük neki. Először szerezzük meg elemeinket változókba:

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

Hozzunk létre egy új Set gyűjteményt:

javascriptlet set = new Set;

Vegyük végig a bekezdéseket egy ciklussal és tegyünk rájuk kattintáskezelőt:

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

Mostantól kattintáskor a bekezdésre adjuk hozzá azt a gyűjteményhez:

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

Annak köszönhetően, hogy a Set gyűjteményt használjuk, egy bekezdés ismételt megkattintása nem fog azonos bekezdés hozzáadásához vezetni.

Mostantól a gombra kattintva vegyük végig a gyűjteményünk tartalmát és minden bekezdés végére adjunk hozzá egy felkiáltójelet:

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

Adottak bekezdések és egy gomb. A felhasználó kattint ezekre a bekezdésekre tetszőleges sorrendben. Tegye úgy, hogy a gomb megnyomásakor minden egyes bekezdés végére, amire kattintás történt, hozzáadódjon egy felkiáltójel.