Javascript JS定时器,clearInterval()不';Don’我不能清除计时器。重新启动时,它将恢复,而不是在零位重新启动
标题已经说明了这一点。我正在使用一个计时器,但当我让它运行大约10秒时,按空格键(空格=键码13),然后它停止,如果我再次按空格键启动,它会继续运行,但随后+2秒。(例如,从18秒开始,从20秒开始恢复)这是从clearInterval ID返回的,我认为。。。不确定。 如果你们能帮我,那太好了 如果你有任何不同做法的建议,也请告诉我 我愿意接受我得到的所有反馈和关于我代码的改进/提示!:) JavascriptJavascript JS定时器,clearInterval()不';Don’我不能清除计时器。重新启动时,它将恢复,而不是在零位重新启动,javascript,oop,timer,Javascript,Oop,Timer,标题已经说明了这一点。我正在使用一个计时器,但当我让它运行大约10秒时,按空格键(空格=键码13),然后它停止,如果我再次按空格键启动,它会继续运行,但随后+2秒。(例如,从18秒开始,从20秒开始恢复)这是从clearInterval ID返回的,我认为。。。不确定。 如果你们能帮我,那太好了 如果你有任何不同做法的建议,也请告诉我 我愿意接受我得到的所有反馈和关于我代码的改进/提示!:) Javascript var Timer = function() { var self = this
var Timer = function() {
var self = this,
div = document.querySelector('.timer'),
hours, minutes, seconds, millsecs;
this.oldDate = new Date().getTime();
this.newDate;
this.isRunning = false;
this.time;
this.timerId = 0;
this.start = function() {
self.isRunning = true;
if (self.isRunning) {
self.timerId = setInterval(function() {
self.time = new Date().getTime() - self.oldDate;
self.time = self.time.toString();
millsecs= self.time.substr(-3);
seconds = (Math.floor(self.time / 1000) % 60) + '.';
minutes = (self.time >= 60000) ? (Math.floor(self.time / (1000*60)) % 60) + ':' : '';
hours = (self.time >= 86400) ? (Math.floor(self.time / (1000*60*60)) % 24) + ':' : '';
div.innerHTML = hours + minutes + seconds + millsecs;
}, 10);
}
}
this.stop = function() {
self.isRunning = false;
clearInterval(obj.timerId);
self.timerId = 0;
}
};
var obj = new Timer();
window.addEventListener('keyup', function(e) {
if(e.keyCode == 32 && obj.isRunning == false) {
obj.start();
}
else if (e.keyCode == 32 && obj.isRunning == true) {
obj.stop();
}
});
请使用文本样式突出显示问题的重要部分..使用setTimeout或setInterval进行如此小的延迟是不可靠的。此外,它也会无缘无故地阻止CPU休眠。使用requestAnimationFrame。