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/