我遇到涉及setinterval的问题。最好显示一个例子,所以这里有一个链接:
http://boudaki.com/testing/carouselTest
基本上我在制作这项工作时遇到了问题,就像我需要它一样。当页面加载时,内容每三秒旋转一次,右侧的编号按钮也会这样做。当你点击按钮时,按钮会延伸并停止动画 - 一切都很好。然后,当您单击按钮底部的小关闭按钮时,动画将恢复 - 一切都很好....但是当您再次点击编号按钮时,动画会继续运行。为什么呢?
相当多的代码,但setIntervals和clear interval是:
就是这样....我只是不明白为什么它不会第二次停止动画???谁能明白为什么?
有什么想法吗?
答案 0 :(得分:3)
这是猜测,但请尝试将所有功能和变量纳入$(document).ready(function() {...})
来电。
然后更改你的setInterval()
,以便传入对函数的引用而不是eval的字符串:
timerId = setInterval( rotateForward, 3000 );
请务必更改所有内容。
说实话,我不知道为什么会这样,但是将变量设为本地可能有助于确保我们只处理一个版本的timerId
。
答案 1 :(得分:1)
我认为问题是timerId的范围。尝试更改警报('应立即停止');提醒('应该立即停止'+ timerId);
我敢打赌你会发现timerId总是一样的值。
答案 2 :(得分:1)
$ closeButton.click(function(){...});在你的循环内。该处理程序将被添加4次,因此当您单击关闭时,将添加4个计时器,再次打开菜单时仅清除1个。
答案 3 :(得分:0)
我唯一能想到的是......我很确定你不能把()放在setInterval调用中。它似乎确实起作用,但也许这是问题的一部分?很难说...但我至少从那里开始。
setInterval("rotateForward", 3000);
此外,也许每次启动前都可以尝试调用clearInterval。