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

发布于 2024-12-13 02:34:46 字数 289 浏览 0 评论 0原文

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

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

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

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

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

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

I have a div that is bouncing every 5 seconds using an interval.

When scrolling to the bottom of the page, this div fades out and the interval is cleared.

However, I think there is an issue with the interval being created multiple times and overlaps upon itself.

Is there a way to check if an interval is set, and if so clear it, and if not, to set it?

The reason I need to clear the interval is because the bounce effect of jquery causes the div to appear again even if it's hidden.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

失去的东西太少 2024-12-20 02:34:46

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

每次设置时先清除它就可以了。

http://jsbin.com/ijuhok/6

Seems that you set the interval whenever it is scrolled. So if I scroll down, and then scroll down again you set it twice.

Just clear it before hand every time you set it and you should be ok.

http://jsbin.com/ijuhok/6

黑凤梨 2024-12-20 02:34:46

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

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

您可以消除 window$(document).ready 因为它始终可用。

You need to overwrite the existing interval so that you can clear it from everywhere: http://jsbin.com/ijuhok/5/.

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

You can eliminate $(document).ready for window because it's always available.

も星光 2024-12-20 02:34:46

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

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

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

Your issue is that you're defining ResInterval in a local scope, because you've used var:

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

Remove the var prefix, and your code will work as expected: Currently, ResInterval is a local varibale of the callback function in fadeIn. When var is omitted, the interval will be assigned to the closest ResInterval declaration (using var).

墨落成白 2024-12-20 02:34:46

我按照下面的方法做了,我的问题就解决了。当您清除计时器时,您应该将值设置为“false”。

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

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

I did this like below, My problem was solved. you should set the value like "false", when you clearTimeout the timer.

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

function pausetimer()
{
  clearTimeout(timeer);
  timeer=false;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文