我在这里尝试了答案:Resetting a setTimeout,但它似乎并不适合我。
我正在使用Owl Carousel构建目录查看器。我有一个函数设置为onMove事件处理程序,显示用户所在的页面。它显示页面计数器,然后设置超时以使其在1秒后淡出。可能很多人通过页面的速度超过每秒一次。所以,如果再次调用该函数,我需要重置超时。
function showCounter(){
var $counter = $('#counter');
//clear timeout
window.clearTimeout(timeout);
//Display counter
$counter.show();
//set timeout
var timeout = window.setTimeout(function(){
$counter.fadeOut(500);
}, 1000);
}
但是window.clearTimeout(超时)似乎没有工作,我不知道为什么
由于
答案 0 :(得分:2)
var timeout
使timeout
函数本地化;因此,每次致电showCounter
时,timeout
都是undefined
。将变量声明移出函数:
var timeout;
function showCounter() {
// ...
timeout = // NO VAR! ...
// ...
}