Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

158
Visualizações
Pomodoro Timer se vuelve negativo y cuenta hacia adelante

Tengo un temporizador pomodoro que se supone que cuenta los "minutos de trabajo" que un usuario ha ingresado y luego los minutos de descanso y luego el ciclo. El temporizador comienza a contar los minutos de trabajo como debería y luego los minutos de descanso (como debería), luego se reinicia y vuelve a contar los minutos de trabajo como debería PERO cuando termina con eso y llega a los minutos de descanso por segunda vez en lugar de contar abajo de por ej. 1 minuto cuenta desde -1 minuto en adelante, entonces -1 minuto y un segundo y así sucesivamente. Soy un completo principiante en JavaScript, por lo que sería muy bueno si lo tuvieras en cuenta, cualquier ayuda la agradezco mucho. Aquí está el código JavaScript:

 // we need some variables to store the work and break minutes var workSeconds = "120", breakSeconds = "60"; // and a referens to interval var xInterval; var audio = new Audio('Bell_finished.mp3'); // start function function start() { xInterval = setInterval(workCountDown, 1000); } // stop function function stop() { clearInterval(xInterval); } // reset function; calls stop, save which re-stores the values of user inputs and then starts again. function reset() { stop(); save(); start(); } // save function that saves the values of user inputs function save() { workSeconds = parseInt(document.getElementById("TaskTime").value)*60; breakMinutes = parseInt(document.getElementById("BreakTime").value)*60; } // working count down function function workCountDown() { // counting down work seconds workSeconds--; // showing work seconds in "0:0" format: document.getElementById("timer").innerText = Math.floor((workSeconds / 60)).toString() + ":" + (workSeconds % 60).toString(); // if workSeconds reaches to zero, stops the workInterval and starts the breakInterval: if (workSeconds == 0) { audio.play(); console.log("relaxing..."); clearInterval(xInterval); xInterval = setInterval(breakCountDown, 1000); } } // breaking count down function function breakCountDown() { // counting down break seconds breakSeconds--; // showing break seconds in "0:0" format: document.getElementById("timer").innerText = Math.floor((breakSeconds / 60)).toString() + ":" + (breakSeconds % 60).toString(); // if breakSeconds reaches to zero, stops the breakInterval, resets the variables to initial values by calling save function and starts the workInterval again: if (breakSeconds == 0) { audio.play(); console.log("ready to work..."); reset(); } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

como dije en el comentario, funciona bien, simplemente cambie breakMinutes a breakSeconds dentro de la función de guardar. Aquí hay una implementación de su código. puede ejecutar el fragmento aquí y ver el resultado

 // we need some variables to store the work and break minutes let workSeconds = "120", breakSeconds = "60"; // and a referens to interval let xInterval; let isStarted = false; // start function function start() { xInterval = setInterval(workCountDown, 1000); } // stop function function stop() { clearInterval(xInterval); } // reset function; calls stop, save which re-stores the values of user inputs and then starts again. function reset() { stop(); save(); start(); } // save function that saves the values of user inputs function save() { workSeconds = parseInt(document.getElementById("TaskTime").value || 120, 10) * 60; breakSeconds = parseInt(document.getElementById("BreakTime").value || 60, 10) * 60; } // working count down function function workCountDown() { // counting down work seconds workSeconds--; // showing work seconds in "0:0" format: document.getElementById("timer").innerText = Math.floor(workSeconds / 60).toString() + ":" + (workSeconds % 60).toString(); // if workSeconds reaches to zero, stops the workInterval and starts the breakInterval: if (workSeconds === 0) { console.log("relaxing..."); clearInterval(xInterval); xInterval = setInterval(breakCountDown, 1000); } } // breaking count down function function breakCountDown() { // counting down break seconds breakSeconds--; // showing break seconds in "0:0" format: document.getElementById("timer").innerText = Math.floor(breakSeconds / 60).toString() + ":" + (breakSeconds % 60).toString(); // if breakSeconds reaches to zero, stops the breakInterval, resets the variables to initial values by calling save function and starts the workInterval again: if (breakSeconds === 0) { console.log("ready to work..."); reset(); } } const startButton = document.getElementById("start-btn"); startButton.addEventListener("click", (e) => { isStarted = !isStarted; if (isStarted) { save(); start(); startButton.textContent = "Stop"; } else { stop(); startButton.textContent = "Start"; document.getElementById("timer").innerText = 0; } });
 <label>Work Time: <input type="number" id="TaskTime" value="1" /></label> <label>Break Time: <input type="number" id="BreakTime" value="1" /></label> <div id="timer">0</div> <button id="start-btn">Start</button>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda