如何清除函数中设置的javascript超时

Tal*_*lon 9 javascript settimeout

我在Javascript中有一个递归类型函数,运行方式如下:

function loadThumb(thumb) {
    rotate=setTimeout(function() {
        loadThumb(next);
    }, delay);
}
Run Code Online (Sandbox Code Playgroud)

注意:我已经简化了功能,使其更易于阅读.

我有一个像这样的"a"标签

<a href="#" onclick="loadThumb(3); clearTimeout(rotate);">Load thumb 3</a>
Run Code Online (Sandbox Code Playgroud)

但是,他们没有清除计时器,计时器继续循环通过该功能而不管clearTimeout()被调用.

有什么想法吗?我认为它可能与范围问题或类似问题有关.

ben*_*sch 13

是的,你需要旋转一个全局变量.只需在函数外声明它就像这样:

var rotate;
var delay = 1000;

function loadThumb(thumb) {
    alert("loading thumb: " + thumb);
    rotate = setTimeout(function() {
        loadThumb(thumb + 1);
    }, delay);
}
Run Code Online (Sandbox Code Playgroud)

此外,您需要确保通话清除超时loadThumb.否则你将清除你刚开始的计时器.

<a href="#" onclick="clearTimeout(rotate); loadThumb(3);">Load thumb 3</a>
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/63FUD/