如何让我的图像滑块在单击后重置其自动滚动计时器?
How do I get my image slider to reset its auto-scroll timer after a click?
I have an image slider 图片数量 n
。它每 5 秒在每一个之间自动滚动一次。滑块两侧各有一个 "previous" 和 "next" 按钮。
$('#button-next').click(function () {
//goes to next slide
});
$('#button-prev').click(function () {
//goes to previous slide
});
var _scrollInterval = AutoScroll();
function AutoScroll() {
var temp = setInterval(function () {
$('#button-next').click();
}, 5000)
return temp;
}
我想要的功能是 当用户点击 "next" 或 "previous" 时,AutoScroll()
定时器有效地 "resets" 回到 0 然后开始又起来了。
我怎样才能做到这一点?我觉得我需要使用 clearInterval()
或类似的东西,但我不太熟悉这些功能。
Fiddle: https://jsfiddle.net/5u67eghv/4/
您正在尝试清除函数而不是变量尝试如下:
var myVar = setInterval(autoplay(), 5000);
然后
clearInterval(myVar)
然后重新设置间隔。
您需要清除每次点击按钮的时间间隔
$('#button-next').click(function () {
//goes to next slide
clearInterval(_scrollInterval);
//Do other functions
_scrollInterval = AutoScroll(); //Reset Interval Timer
});
$('#button-prev').click(function () {
//goes to previous slide
clearInterval(_scrollInterval);
//Do other functions
_scrollInterval = AutoScroll(); //Reset Interval Timer
});
var _scrollInterval = AutoScroll();
function AutoScroll() {
var temp = setInterval(function () {
$('#button-next').click();
}, 5000)
return temp;
}
这里你每次按下按钮时清除和重置间隔
这应该有效:
var temp; // <- add variable declaration
$('#button-next').click(function () {
nextImage = currentImage == lastImage ? firstImage : currentImage + 1;
sliderImages.eq(currentImage).hide(500);
sliderImages.eq(nextImage).show(500);
currentImage = nextImage;
clearInterval(temp); // <- clear interval
AutoScroll(); // <- restart autoscroll
});
$('#button-prev').click(function () {
prevImage = currentImage == firstImage ? lastImage : currentImage - 1;
sliderImages.eq(currentImage).hide(500);
sliderImages.eq(prevImage).show(500);
currentImage = prevImage;
clearInterval(temp); // <- clear interval
AutoScroll(); // <- restart autoscroll
});
function AutoScroll() {
temp = setInterval(function () { // <- temp variable already declared
$('#button-next').click();
}, 5000)
return temp;
}
I have an image slider 图片数量 n
。它每 5 秒在每一个之间自动滚动一次。滑块两侧各有一个 "previous" 和 "next" 按钮。
$('#button-next').click(function () {
//goes to next slide
});
$('#button-prev').click(function () {
//goes to previous slide
});
var _scrollInterval = AutoScroll();
function AutoScroll() {
var temp = setInterval(function () {
$('#button-next').click();
}, 5000)
return temp;
}
我想要的功能是 当用户点击 "next" 或 "previous" 时,AutoScroll()
定时器有效地 "resets" 回到 0 然后开始又起来了。
我怎样才能做到这一点?我觉得我需要使用 clearInterval()
或类似的东西,但我不太熟悉这些功能。
Fiddle: https://jsfiddle.net/5u67eghv/4/
您正在尝试清除函数而不是变量尝试如下: var myVar = setInterval(autoplay(), 5000); 然后 clearInterval(myVar)
然后重新设置间隔。
您需要清除每次点击按钮的时间间隔
$('#button-next').click(function () {
//goes to next slide
clearInterval(_scrollInterval);
//Do other functions
_scrollInterval = AutoScroll(); //Reset Interval Timer
});
$('#button-prev').click(function () {
//goes to previous slide
clearInterval(_scrollInterval);
//Do other functions
_scrollInterval = AutoScroll(); //Reset Interval Timer
});
var _scrollInterval = AutoScroll();
function AutoScroll() {
var temp = setInterval(function () {
$('#button-next').click();
}, 5000)
return temp;
}
这里你每次按下按钮时清除和重置间隔
这应该有效:
var temp; // <- add variable declaration
$('#button-next').click(function () {
nextImage = currentImage == lastImage ? firstImage : currentImage + 1;
sliderImages.eq(currentImage).hide(500);
sliderImages.eq(nextImage).show(500);
currentImage = nextImage;
clearInterval(temp); // <- clear interval
AutoScroll(); // <- restart autoscroll
});
$('#button-prev').click(function () {
prevImage = currentImage == firstImage ? lastImage : currentImage - 1;
sliderImages.eq(currentImage).hide(500);
sliderImages.eq(prevImage).show(500);
currentImage = prevImage;
clearInterval(temp); // <- clear interval
AutoScroll(); // <- restart autoscroll
});
function AutoScroll() {
temp = setInterval(function () { // <- temp variable already declared
$('#button-next').click();
}, 5000)
return temp;
}