按钮单击时,计时器不会停止

时间:2013-03-08 06:25:17

标签: javascript html

按钮点击时我的定时器有问题。当我点击按钮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);
}

3 个答案:

答案 0 :(得分:0)

您需要将setTimeout存储在某处以便稍后对其进行操作。

var myVar;

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

function myStopFunction()
{
  clearTimeout(myVar);
}

ref http://www.w3schools.com/js/js_timing.asp

答案 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/