gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:57:33 26 4
gpt4 key购买 nike

我在 Javascript 中有一个像这样运行的递归类型函数:

function loadThumb(thumb) {
rotate=setTimeout(function() {
loadThumb(next);
}, delay);
}

注意:我已经简化了函数以使其更易于阅读。

我有这样的“a”标签

<a href="#" onclick="loadThumb(3); clearTimeout(rotate);">Load thumb 3</a>

但是,它们不会清除计时器,计时器会继续在函数中循环,而不管 clearTimeout() 是否被调用。

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

最佳答案

是的,您需要将 rotate 设置为全局变量。只需像这样在函数外声明它:

var rotate;
var delay = 1000;

function loadThumb(thumb) {
alert("loading thumb: " + thumb);
rotate = setTimeout(function() {
loadThumb(thumb + 1);
}, delay);
}

此外,您需要确保在调用 loadThumb 之前清除超时。否则,您将清除刚刚启动的计时器。

<a href="#" onclick="clearTimeout(rotate); loadThumb(3);">Load thumb 3</a>

fiddle :http://jsfiddle.net/63FUD/

关于javascript - 如何清除函数中设置的 javascript 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com