0
我在做一个时间对象,但是我在clearInterval中遇到了一些奇怪的事情,但真的是一般的函数。相关代码如下所示:clearInterval不是在wow和wow中发出奇怪的声音
var timer = {
timerStarted: false,
startTimer: function(){
var howMuchTime = parseInt($('#timer-button-number').text());
var timesUpAt = Date.now() + howMuchTime*60*1000;
var start = new Date().getTime();
var milseccount = timesUpAt - start;
function sectimer(){
var remaining = Math.floor(milseccount - (new Date().getTime() -
start));
if (remaining <= 0) {
clearInterval(x);
}
var minutes = Math.floor((remaining % (1000*60*60))/(1000*60));
var seconds = Math.floor((remaining % (1000*60))/1000);
//display results
$('#timer-button-number').text(minutes + 'm ' + seconds + 's');
}
var x = null;
if (!timer.timerStarted) {
x = setInterval(sectimer, 100);
timer.timerStarted = true;
} else if (timer.timerStarted){
clearInterval(x);
timer.timeStarted = false;
console.log(timer.timeStarted);
}
}
}
所以点击按钮,定时器启动,timer.timeStarted交换机到真正的价值。但是当再次点击该按钮时,间隔不会被清除。 timer.timeStarted切换为false,但当再次单击该按钮时,if语句的第二部分继续执行(除clearInterval部分之外的所有部分),就好像if语句不指示间隔应该再次启动一样即使它从未真正停止过)。有人可以帮忙吗?
每次'startTimer所()'被称为'x'会是null,因为你做了'var x = null' –
如果你会检查'x'的值,你就会知道问题是什么。 – trincot
运行它是因为得到我的x未定义。同样的事情,如果我把声明移到开头。如果我将x设置为setInterval之外的if语句x每次都变成某些东西,但clearInterval仍然不起作用,并且第二个语句每次都运行timer.timeStated值。问题仍然没有解决 –