Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

159
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!