Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

106
Vistas
DOM. Por qué la clase no se elimina después de hacer clic nuevamente

Traté de diseñar algún elemento haciendo clic en ellos dándoles una clase. Solo uno en el que haga clic tendrá el estilo. Pero si hago clic en el elemento dos veces, la clase no se eliminará. Yo uso alternar, pero todavía no funciona

 const lists = document.querySelectorAll('.list'); lists.forEach(list => { list.addEventListener('click', () => { // remove the previous class active lists.forEach(list => list.classList.remove("active")) list.classList.toggle('active'); }); });
 .list.active { color: crimson; }
 <ul> <li class="list">Lorem ipsum dolor sit.</li> <li class="list">Lorem ipsum dolor sit.</li> <li class="list">Lorem ipsum dolor sit.</li> <li class="list">Lorem ipsum dolor sit.</li> </ul>

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

  1. su .classList.remove() no especifica ninguna clase para eliminar.
    Cambiar a .classList.remove('active')
  2. list.classList.toggle('active'); nunca alternará la clase active . Será lo mismo que list.classList.add('active');

Si realmente quieres alternar la clase active , hazlo

 document.querySelectorAll('#list > li').forEach( (list_el,_,all) => { list_el.onclick =_=> { if ( list_el.classList.toggle('active') ) all.forEach( li => li.classList.toggle('active', list_el===li )) } })
 #list > li { cursor : pointer; } .active { color: crimson; }
 <ul id="list"> <li>Lorem ipsum dolor sit.</li> <li>Lorem ipsum dolor sit.</li> <li>Lorem ipsum dolor sit.</li> <li>Lorem ipsum dolor sit.</li> </ul>

about 4 years ago · Juan Pablo Isaza Denunciar

0

listas.forEach(lista => lista.classList.remove("activo"))

no necesita esta parte ya que alternar ('activo') eliminará la clase cuando haga clic dos veces

 const lists = document.querySelectorAll('.list'); lists.forEach(list => { list.addEventListener('click', () => { // remove the previous class active list.classList.toggle('active'); }); });
 .list.active { color: crimson; }
 <ul> <li class="list">Lorem ipsum dolor sit.</li> <li class="list">Lorem ipsum dolor sit.</li> <li class="list">Lorem ipsum dolor sit.</li> <li class="list">Lorem ipsum dolor sit.</li> </ul>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda