0

我在单击按钮时遇到计时器问题。当我单击按钮 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);
}
4

3 回答 3

0

您需要将 setTimeout 存储在某个地方以便以后对其进行操作。

var myVar;

function myFunction()
{
  myVar=setTimeout(function(){alert("Hello")},3000);
}

function myStopFunction()
{
  clearTimeout(myVar);
}

参考http://www.w3schools.com/js/js_timing.asp

于 2013-03-08T06:51:54.140 回答
0

也许你必须改变这个:

if(FLAG_CLICK) {
    setTimeout(tim,1000);               
    FLAG_CLICK = false;
}

到:

if(FLAG_CLICK) {
    tim();               
    FLAG_CLICK = false;
}

它似乎对我正常工作

于 2013-03-08T06:53:00.913 回答
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/

于 2013-03-08T06:53:43.040 回答