如何重置settimeout

时间:2014-10-16 00:55:32

标签: javascript jquery

我在这里尝试了答案: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(超时)似乎没有工作,我不知道为什么

由于

1 个答案:

答案 0 :(得分:2)

函数内的

var timeout使timeout函数本地化;因此,每次致电showCounter时,timeout都是undefined。将变量声明移出函数:

var timeout;
function showCounter() {
  // ...
  timeout = // NO VAR! ...
  // ...
}