在函数中重置setInterval,范围是全局的.?

Mor*_*ney 0 javascript jquery settimeout setinterval

问题:当我在函数中声明clearInterval()/ setInterval()或clearTimeout()/ setTimeout()时,它什么都不做.我必须重置它的原因是用户可以单击以重置计时器.

我尝试了什么:我想要一个函数每3秒执行一次(因此我使用setInterval()与setTimeout()),并在点击时重置该计时器.我已经尝试使用setTimeout(),在每次执行函数时都使用clearTimeout()和setTimeout().结果:执行一次.

以下代码与setInterval相同.结果:它循环,永不重置.

// Declare variables as global
var varTimerSpeed = 3000;
var varTimerInterval;
varTimerInterval = setInterval("someFunction()", varTimerSpeed);

function someFunction() {
  // Reset timer
  clearInterval(varTimerInterval);
  varTimerInterval = setInterval("someFunction()", varTimerSpeed);
}

// Call the function
$(".class").live("click",function() { someFunction(); });
Run Code Online (Sandbox Code Playgroud)

我在someFunction()中正在执行其他正确执行的事情,因此我知道click的处理程序正在运行.

use*_*716 5

如果您希望someFunction以一定间隔运行,但在.class单击元素时将其清除并重置,则不要清除内部间隔someFunction.

只需清除并在单击处理程序中重新启动它.

var varTimerSpeed = 3000;
var varTimerInterval = setInterval(someFunction, varTimerSpeed);

function someFunction() {
  console.log( "someFunction" );
}

$(".class").live("click",function() { 
    clearInterval( varTimerInterval );
    varTimerInterval = setInterval(someFunction, varTimerSpeed);
});
Run Code Online (Sandbox Code Playgroud)