我知道这是一个经常被问到的问题,而且我已经阅读了所有相关主题。
我有一个必须模拟滑块的功能:
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秒后浏览器崩溃。
答案 0 :(得分:1)
您有两个timer
个变量。
一个是ready
功能的本地功能。另一个是您的click
功能的本地功能。
当您尝试清除第一个间隔时,您正在使用第二个timer
变量undefined
。
您需要在两个函数都可以访问的范围内声明(使用var
)变量,并且不在ready
和click
内重新声明它。假设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);