Tengo este código que hace clic en los elementos. El propósito de estos botones es abrir acordeones. Funciona pero necesito modificarlo un poco para reducir la carga en el servidor. Por el momento, se hace clic en todos los botones a la vez, lo que hace que algunos botones en la misma página no funcionen.
Me preguntaba si hay alguna forma de esperar al menos 3 segundos antes de hacer clic en el siguiente botón. Todos los botones comparten el mismo nombre de clase.
const matchBtns = document.querySelectorAll('.classname') matchBtns.forEach(matchbtn => matchbtn.click())
He intentado envolver forEach dentro de setTimeout pero no puedo hacer que funcione.
Lo intenté
setTimeout(function() { matchBtns.forEach(matchbtn => matchbtn.click());}, 3000);
Gracias
Puedes cambiar tu implementación algo como esto
const matchBtns = document.querySelectorAll('.classname') let nextClickIn = 0; let delay = 3000; matchbtns.forEach((matchbtn) => { setTimeout(() => {matchbtn.click()}, nextClickIn) nextClickIn += delay })
Nota: Proporcione el valor de retraso en milisegundos
Puede codificar este de la siguiente manera:
const matchBtns = document.querySelectorAll('.classname') let nextClick = 1; let delay = 3000; matchbtns.forEach((matchbtn) => { setTimeout(() => {matchbtn.click()}, delay) nextClick++; delay *= nextClick })