按钮点击时我的定时器有问题。当我点击按钮startpause()方法被调用那里我设置启动计时器和停止计时器。当我正常点击按钮(一次点击后再点击一次)时它工作正常但是当我再次快速点击按钮时,计时器开始以2-3秒跳跃。好像不止一个计时器正在运行..任何人都有任何想法.... ??这里时间是我的计时器方法
function startpause() {
if(FLAG_CLICK) {
setTimeout(tim,1000);
FLAG_CLICK = false;
}
else {
clearTimeout(ti);
FLAG_CLICK = true;
}
}
function tim() {
time.innerHTML = t;
t = t + 1;
ti= setTimeout("tim()", 1000);
}
答案 0 :(得分:0)
您需要将setTimeout存储在某处以便稍后对其进行操作。
var myVar;
function myFunction()
{
myVar=setTimeout(function(){alert("Hello")},3000);
}
function myStopFunction()
{
clearTimeout(myVar);
}
答案 1 :(得分:0)
也许你必须改变这个:
if(FLAG_CLICK) {
setTimeout(tim,1000);
FLAG_CLICK = false;
}
为:
if(FLAG_CLICK) {
tim();
FLAG_CLICK = false;
}
这似乎对我有用
答案 2 :(得分:0)
试试这个:
// assuming you declared ti and t out here, cuz I hope they're not global
var t = 0;
var ti;
var running = false;
function startpause() {
clearTimeout(ti);
if(!running) {
ti = setTimeout(tim,1000);
running = true;
} else {
running = false;
}
}
function tim() {
time.innerHTML = t;
t = t + 1;
ti = setTimeout(tim,1000);
}
您可以在此处详细了解.setTimeout()
:https://developer.mozilla.org/en/docs/DOM/window.setTimeout
另外,请参阅我刚创建的jsfiddle:http://jsfiddle.net/4BMhd/