Obținerea elementelor DOM fără duplicate
Să presupunem că avem paragrafe și un buton:
<p>aaa</p>
<p>bbb</p>
<p>ccc</p>
<p>ddd</p>
<p>eee</p>
<button>click me</button>
Să presupunem că utilizatorul face clic pe aceste paragrafe
într-o ordine arbitrară. Să facem astfel,
încât la apăsarea butonului la sfârșitul fiecărui
paragraf pe care s-a făcut clic, să fie
adăugat un semn de exclamare. Să rezolvăm problema
prin Set.
Să începem. Pentru început, să obținem elementele noastre în variabile:
let button = document.querySelector('button');
let elems = document.querySelectorAll('p');
Să creăm o nouă colecție Set:
let set = new Set;
Să parcurgem paragrafele cu un ciclu și să atașăm pe ele un handler de clic:
for (let elem of elems) {
elem.addEventListener('click', function() {
});
}
Să facem acum ca la clic pe paragraf să adăugăm acest paragraf în colecție:
for (let elem of elems) {
elem.addEventListener('click', function() {
set.add(this);
});
}
Datorită faptului că folosim colecția Set,
un clic repetat pe paragraf nu va duce
la adăugarea unui duplicat al paragrafului.
Să facem acum ca la clic pe buton să parcurgem conținutul colecției noastre și fiecărui paragraf la sfârșit să adăugăm un semn de exclamare:
button.addEventListener('click', function() {
for (let elem of set) {
elem.textContent = elem.textContent + '!';
}
});
Sunt date paragrafe și un buton. Utilizatorul face clic pe aceste paragrafe într-o ordine arbitrară. Faceți astfel încât la apăsarea butonului la sfârșitul fiecărui paragraf pe care s-a făcut clic, să fie adăugat un semn de exclamare.