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

157
Vistas
javascript forEach: elimine las iteraciones que contienen la clase y agregue la clase a la siguiente iteración

Así que estoy tratando de hacer un formulario de varios pasos con la clase activa aplicada al paso actual. Al hacer clic en Siguiente, quiero eliminar esa clase y agregarla a la próxima iteración de esas clases.

 const nextBtn = document.querySelectorAll('.next'); const prevBtn = document.querySelectorAll('.previous'); const submitBtn = document.querySelectorAll('.submit'); const progress_li = document.querySelector('.progress-bar_li'); const fieldset = document.getElementsByTagName('fieldset'); const step = document.getElementsByClassName( 'step' ); const active_fieldset = document.getElementsByClassName('activeFieldset'); [...nextBtn].forEach(el => { el.addEventListener('click', e => { e.preventDefault(); [...registration_fieldset].forEach((className, i) => { if (className.classList.contains('activeFieldset')) { className.classList.remove('activeFieldset'); step[i + 1].classList.add('activeFieldset'); //^this doesn't work, nor does subbing step with className } }); }); });
 Pug mixin nextandprev .btn-small.btn-small__reg.next Next .btn-small.btn-small__reg.previous Previous mixin next .btn-small.btn-small__reg.next Next mixin prevandsubmit .btn-small.btn-small__reg.previous Previous .btn-small.btn-small__reg.submit Submit <fieldset class="step activeFieldset">part 1 +next </fieldset> <fieldset> <fieldset class="step">sub 1 part 2 nextandprev </fieldset> <fieldset class="step"> sub 2 part 2 nextandprev </fieldset> </fieldset> <fieldset class="step">part 3 nextandprev </fieldset> <fieldset class="step">part 4 nextandprev </fieldset> <fieldset class="step">part 5 nextandprev </fieldset>
Cualquier ayuda es muy apreciada. Quiero mejorar mucho en la comprensión de estos bucles forEach

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

0

Suponiendo que tiene la misma cantidad de botones y pasos siguientes, puede usar el índice de botones con el índice de pasos para agregar la clase al siguiente paso y eliminarla de todos los demás pasos.

 const nextBtn = document.querySelectorAll('.next'); const prevBtn = document.querySelectorAll('.previous'); const steps = document.querySelectorAll('.step'); nextBtn.forEach((btn, btnIndex) => { btn.addEventListener('click', (e) => { e.preventDefault(); steps.forEach((step, stepIndex) => { // If button is for next step, add class to next step, else remove if (btnIndex === stepIndex - 1) { step.classList.add('activeFieldset'); } else { step.classList.remove('activeFieldset'); } }); }); });
 .activeFieldset { border: 1px solid red; }
 <fieldset class="step activeFieldset"> <div>Part 1</div> <button class="next">Next</button> </fieldset> <fieldset> <fieldset class="step"> <div>Sub 1 Part 2</div> <button class="previous">Prev</button> <button class="next">Next</button> </fieldset> <fieldset class="step"> <div>Sub 2 Part 2</div> <button class="previous">Prev</button> <button class="next">Next</button> </fieldset> </fieldset> <fieldset class="step"> <div>Part 3</div> <button class="previous">Prev</button> <button class="next">Next</button> </fieldset> <fieldset class="step"> <div>Part 4</div> <button class="previous">Prev</button> <button class="next">Next</button> </fieldset> <fieldset class="step"> <div>Part 5</div> <button class="previous">Prev</button> <button class="next">Next</button> </fieldset>

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