我想制作一个简单的倒计时器,可以通过+或 - 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();
}
}
答案 0 :(得分:0)
看起来你的setSession()方法是NaN错误出现的地方。每次单击计时器停止计时器时,它都会从
的innerHTML中减去1<div class='session' onclick='setSession();general()'>2</div>
如果计时器已启动,则innerHTML为表单
的文本number:number
...这是导致错误的原因。试图从类似的东西中减去1导致不良结果。
会话数字的目的是什么?您是否尝试将会话变量用作数十位的占位符或类似的东西?为什么不将它全部保存为单个数字并在更新html时转换为适当的字符串?