Числа считаются только один раз, а не бесконечно - PullRequest
0 голосов
/ 28 апреля 2020

Я создаю интервальный таймер. Я хочу, чтобы число уменьшалось до 0 после ввода номера и нажатия кнопки, если оно уже отсчитывает до 0, то функция запускается с самого начала. В моем коде fukncja считает до 0, но следующий отсчет не заканчивается на 0, а идет до минус числа. Почему это не работает? Вы можете помочь?

var workI = 0;
var countDownI = 0;
document.getElementById('btn').addEventListener('click',function(){
  var workValue = Math.ceil(document.getElementById('work-seconds').value);
  if(!workI)clearInterval(workI);
  function countDown(){
    var workSec = new Date().getTime() + workValue * 1000;
    countWorkSec();
    workI = setInterval(countWorkSec,1000);
    function countWorkSec(){
      var countSec = Math.ceil((workSec - new Date().getTime()) / 1000);
      countSec < 10 ? document.getElementById('workSecs').textContent = "0" + countSec : document.getElementById('workSecs').textContent = countSec;
      if(countSec == 0){
        clearInterval(workI);
        workI = 0;
      }
    };
  }
  countDown();
  countDownI = setInterval(countDown,workValue * 1000);
});
<p>Work</p>
<input type="number" id="work-seconds" placeholder="seconds" min="0">
<br>
<br>
<button id="btn">START</button>
<p>Work Timer : <span id="workSecs"></span></p>

1 Ответ

0 голосов
/ 28 апреля 2020
var workI = 0;
var countDownI = 0;
document.getElementById('btn').addEventListener('click',function(){
  var workValue = Math.ceil(document.getElementById('work-seconds').value);
  function countDown(){
    if(workI)clearInterval(workI); // Change - Clearinterval when countDown starts
    var workSec = new Date().getTime() + workValue * 1000;
    countWorkSec();
    workI = setInterval(countWorkSec,1000);
    function countWorkSec(){
      var countSec = Math.ceil((workSec - new Date().getTime()) / 1000);
      countSec < 10 ? document.getElementById('workSecs').textContent = "0" + countSec : document.getElementById('workSecs').textContent = countSec;
      if(countSec == 0){
        clearInterval(workI);
        workI = 0;
      }
    };
  }
  countDown();
  countDownI = setInterval(countDown, (workValue + 1) * 1000);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...