在javascript中停止并运行计时器

时间:2016-02-20 04:56:45

标签: javascript

我想制作一个简单的倒计时器,可以通过+或 - div设置,也可以通过点击自身来停止和运行。我的问题是当它停止然后运行它显示NAN为第一个数字我认为这是因为setTimer功能,但我不知道如何解决这个问题。

 <div class='session'>2</div>
 <div id='increase' onclick='decrease()'>-</div>
 <div id='increase' onclick='increase()'>+</div>
 <div class='session' onclick='setSession();general()'>2</div>
var x=document.getElementsByClassName('session');
var y=document.getElementById('break');
var seconds=60;


function increase(){
  for (var i=0;i<x.length;i++){
    x[i].innerHTML++;
 }
}

function decrease(){
  for (var i=0;i<x.length;i++){
    if(x[i].innerHTML>0){
        x[i].innerHTML--;
     }
   }
}

var session;
function setSession(){
  session = x[1].innerHTML - 1;
}

function timer() {
   if (seconds > 0) {
     seconds--;
     if (seconds == 0 && session > 0) {
          session--;
          seconds = 60;
        }
   }
     x[1].innerHTML = session + ':' + seconds;
  }

function stoptimer(){
    clearInterval(t);
}

  var t;
 var on=true;
 function general(){
   if(on){  
      on=false;
      t=setInterval(timer,100);
  }else{  
     on=true;
    stoptimer();
  }
}

1 个答案:

答案 0 :(得分:0)

看起来你的setSession()方法是NaN错误出现的地方。每次单击计时器停止计时器时,它都会从

的innerHTML中减去1
<div class='session' onclick='setSession();general()'>2</div>

如果计时器已启动,则innerHTML为表单

文本
number:number

...这是导致错误的原因。试图从类似的东西中减去1导致不良结果。

会话数字的目的是什么?您是否尝试将会话变量用作数十位的占位符或类似的东西?为什么不将它全部保存为单个数字并在更新html时转换为适当的字符串?