Hämta DOM-element utan dubbletter

Låt oss säga att vi har stycken och en knapp:

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

<button>click me</button>

Låt användaren klicka på dessa stycken i godtycklig ordning. Låt oss göra så att när knappen trycks, läggs ett utropstecken till i slutet av varje stycke som klickades på. Låt oss lösa uppgiften med Set.

Låt oss börja. Först, låt oss få våra element i variabler:

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

Låt oss skapa en ny Set-samling:

javascriptlet set = new Set;

Låt oss iterera över styckena med en loop och koppla en klickhanterare till dem:

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

Låt oss nu vid klick på ett stycke lägga till detta stycke i samlingen:

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

På grund av att vi använder Set-samlingen kommer ett upprepade klick på ett stycke inte att leda till att en dubblett av stycket läggs till.

Låt oss nu vid klick på knappen iterera över innehållet i vår samling och lägga till ett utropstecken i slutet av varje stycke:

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

Det finns stycken och en knapp. Användaren klickar på dessa stycken i godtycklig ordning. Gör så att när knappen trycks, läggs ett utropstecken till i slutet av varje stycke som klickades på.