倒数计时器问题

时间:2017-08-02 19:25:52

标签: javascript jquery

有人可以解释一下,为什么当我按加号再开始时,计时器会增加分钟数?例如,如果我将分钟eqaul设置为10,则计时器从11开始计数。当我按减号时,会出现同样的问题。我想做番茄钟,但首先我必须解决这个问题:P谢谢你的帮助!

这是我的代码

  var flag = false;
  var timer;
  var work = 2;
  var count = 0;

  $('.mins').html(updateNum(work));
  $('.secs').html(updateNum(count));


function workTimer() {
  if(count < 0) {
    work--;
    count = 59;
  }
  if (work<0) {
    return clearInterval(timer);
  }



  $('.mins').html(updateNum(work));
  $('.secs').html(updateNum(count));
  count--;
}
$('.start-button').click(function() {
  if (flag == false) {

    timer=setInterval(workTimer,1000);
    $(this).html("stop");
            flag = true;
            return flag;
  }
  else if(flag == true){

      clearInterval(timer);
      $(this).html("start");
      flag = false;
      return flag;
  }
})



$('.session-plus').click(function() {
  if(flag == false) {
    console.log(work);
    $('.mins').html(updateNum(work++));
  }

})

$('.session-minus').click(function() {
  if(flag == false) {
          $('.mins').html(updateNum(work--));
  }

})

function updateNum(num) {
  if(num < 10) {
      return num = "0" + num;
  }
  else {
      return num;
  }

}

https://jsfiddle.net/wved99o3/

#edit 我不想再做另一个话题,所以我有下一个问题。你可以看到我的计时器从0开始不算数。定时器每增加1秒钟就会增加。我不明白为什么:/

https://jsfiddle.net/6vnkgt3h/

1 个答案:

答案 0 :(得分:2)

$('.mins').html(updateNum(work++));

您需要将++交换到变量之前。

$('.mins').html(updateNum(++work));

当++位于变量之后时,旧值将被传入,而不是新值。通过将++放在前面,它在传入值之前执行增量。