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

265
Vistas
setTimeout no funciona, y sí, la función no tiene ()

Estoy haciendo un temporizador y, por alguna razón, el temporizador no está disminuyendo correctamente usando la función de countDown en el código a continuación. Estoy usando setTimeout para llamarlo countDown repetidamente, pero cuando revisé el JavaScript del depurador ni siquiera va a esa línea, después de la penúltima línea timeEl.textContent = tempMinutes + ":" + tempSeconds; simplemente se detiene. setInterval pero es lo mismo. Quiero saber cómo bajar el temporizador y configurar el tiempo de setTimeout para que haga lo suyo, pero ¿cómo? Cualquier consejo o ayuda es muy apreciada!

 const workBtnEl = document.querySelector("#work-btn"); const shortBreakBtnEl = document.querySelector("#short-break-btn"); const longBreakBtnEl = document.querySelector("#long-break-btn"); let timeEl = document.querySelector("#time"); const work = 25; const shortBreak = 5; const longBreak = 15; let currentMinutes, currentSeconds = 0; workBtnEl.addEventListener("click", function() { timeEl.textContent = "25:00"; currentMinutes = work; countDown(currentMinutes, 0); }); function countDown(minutes, seconds) { if (seconds == 0) { if (minutes == 0) { return; } minutes -= 1; seconds = 59; } let tempSeconds = seconds; let tempMinutes = minutes; if (seconds < 10) { tempSeconds = "0" + seconds; } if (minutes < 10) { tempMinutes = "0" + minutes } timeEl.textContent = tempMinutes + ":" + tempSeconds; let time = setTimeout(countDown, 1000, minutes, seconds); }
 <button id="work-btn"> Work </button> <button id="short-break-btn"> Short break </button> <button id="long-break-btn"> Long break </button> <span id="time">Time</span>

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

0

Nunca disminuyes los seconds cuando no es cero.

Así que agrega eso después del bloque if :

 if (seconds == 0) { // your code... } else seconds--; // <---
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe reducir la variable de segundos en la función de countDown de lo contrario, se imprimirá el mismo texto en su área de texto cada vez.

En este momento, solo tiene una condición si los segundos son 0, luego configure los segundos en 59.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Mira lo que has hecho en esta línea:

 let currentMinutes, currentSeconds = 0;

Los minutos actuales no estarán definidos en su mayoría, usé Node REPL para verificar si tiene algo como:

 let a, b = 0

El valor de a no estaba definido y b se estableció en cero. Una asignación apropiada sería

 let currentMinutes = 0; let currentSeconds = 0;
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