Javascript - 可以检查是否已设置间隔?

时间:2011-10-31 15:55:38

标签: javascript jquery setinterval clearinterval

我有一个div,它使用间隔每5秒钟弹跳一次。

当滚动到页面底部时,此div淡出并且间隔被清除。

但是,我认为多次创建的间隔存在问题并且与自身重叠。

有没有办法检查是否设置了间隔,如果设置了间隔,如果没有,是否设置间隔?

我需要清除间隔的原因是因为jquery的反弹效果导致div再次出现,即使它被隐藏了。

JSBIN:http://jsbin.com/ijuhok/4/

4 个答案:

答案 0 :(得分:4)

似乎您在滚动时设置间隔。因此,如果我向下滚动,然后再向下滚动,则将其设置为两次。

每次设置时都要事先清除它,你应该没问题。

http://jsbin.com/ijuhok/6

答案 1 :(得分:4)

您需要覆盖现有的时间间隔,以便可以从任何地方清除它:http://jsbin.com/ijuhok/5/

$j("#more").fadeIn('slow',function(){
    ResInterval = window.setInterval(bounceMore, 5000);
    // no "var"
});

您可以删除$(document).ready的{​​{1}},因为它始终可用。

答案 2 :(得分:1)

您的问题是,您在本地范围内定义ResInterval,因为您已使用var

$j("#more").fadeIn('slow',function(){
   var ResInterval = window.setInterval('bounceMore()', 5000);
});

删除var前缀,您的代码将按预期工作:目前,ResIntervalfadeIn中回调函数的本地变量。省略var时,间隔将分配给最近的ResInterval声明(使用var)。

答案 3 :(得分:0)

我这样做了,我的问题解决了。当你清除计时器时,你应该设置像" false"这样的值。

var timeer=false;
----
----
if(timeer==false)
{
  starttimer();  
}
-----
-----
function starttimer()
{
  timeer=setInterval(activefunction, 1000); 
}

function pausetimer()
{
  clearTimeout(timeer);
  timeer=false;
}