setInterval / clearInterval问题

时间:2015-07-24 09:41:20

标签: javascript jquery

我知道这是一个经常被问到的问题,而且我已经阅读了所有相关主题。

我有一个必须模拟滑块的功能:

 function fakeSlider(){

        if(!$('.myClass li').last().hasClass('active')){
            $('.myClass li.active').next().trigger('click');
        }else{
            $('.myClass li').first().trigger('click');
        }
    }

我在文档上调用了该函数:

var timer = setInterval(fakeSlider, 5000);

但接下来,如果我点击$(' .myClass li'),我想重置计时器! 我试过了:

        window.clearInterval(timer);
        var timer = setInterval(fakeSlider, 5000);

它不起作用(滑块仍然有效,但定时器不会重置),10秒后浏览器崩溃。

4 个答案:

答案 0 :(得分:1)

您有两个timer个变量。

一个是ready功能的本地功能。另一个是您的click功能的本地功能。

当您尝试清除第一个间隔时,您正在使用第二个timer变量undefined

您需要在两个函数都可以访问的范围内声明(使用var)变量,并且readyclick内重新声明它。假设click位于ready内,您只需从问题中最后一个代码块的第二行中删除var即可。

答案 1 :(得分:0)

谢谢你们,问题解决了。

确实我重写了两次 timer 变量。

我删除了" var"点击功能:

timer = setInterval(function() {fakeSlider();}, 5000);

有效:)

答案 2 :(得分:-1)

似乎你重写了计时器变量

window.clearInterval(timer);
timer = setInterval(fakeSlider, 5000);

答案 3 :(得分:-2)

更改您的代码:

var timer = setInterval(fakeSlider, 5000);

成:

var timer = setInterval(function() {fakeSlider();}, 5000);