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

Абзацтар мен батырма берілген. Пайдаланушы осы абзацтарды кездейсоқ тәртіпте басады. Батырманы басқанда, басылған әрбір абзацтың соңына леп белгісі қосылатындай етіңіз.