Obtención de elementos DOM sin duplicados
Supongamos que tenemos párrafos y un botón:
<p>aaa</p>
<p>bbb</p>
<p>ccc</p>
<p>ddd</p>
<p>eee</p>
<button>click me</button>
Supongamos que el usuario hace clic en estos párrafos
en un orden arbitrario. Hagamos que
al presionar el botón, al final de cada
párrafo en el que se haya hecho clic, se
agregue un signo de exclamación. Resolvamos el problema
usando Set.
Empecemos. Primero obtengamos nuestros elementos en variables:
let button = document.querySelector('button');
let elems = document.querySelectorAll('p');
Creemos una nueva colección Set:
let set = new Set;
Recorramos los párrafos con un ciclo y asignemosles un controlador de eventos para el clic:
for (let elem of elems) {
elem.addEventListener('click', function() {
});
}
Ahora, al hacer clic en un párrafo, agreguemos ese párrafo a la colección:
for (let elem of elems) {
elem.addEventListener('click', function() {
set.add(this);
});
}
Debido a que usamos la colección Set,
un clic repetido en un párrafo no conducirá
a la adición de un duplicado del párrafo.
Ahora, al hacer clic en el botón, recorramos el contenido de nuestra colección y a cada párrafo agreguemos un signo de exclamación al final:
button.addEventListener('click', function() {
for (let elem of set) {
elem.textContent = elem.textContent + '!';
}
});
Se dan párrafos y un botón. El usuario hace clic en estos párrafos en un orden arbitrario. Haga que al presionar el botón, al final de cada párrafo en el que se haya hecho clic, se agregue un signo de exclamación.