我最近发布了幻灯片中使用间隔的问题(Issues with setInterval),并希望远离setInterval可以解决我的所有问题,但事实并非如此。
我遇到下一个幻灯片功能“记住”点击次数(甚至是点击之间的速度)以及每次间隔触发时重复该次数的问题。通常,在用户输入后,该功能应暂停一段时间,然后一次返回一张幻灯片的间隔,而是根据用户点击开始间隔。
例如:用户滑动下一个幻灯片按钮四次,节目移动四个幻灯片,然后暂停,之后它将移动另外四个幻灯片(而不是一个)。
以下是我的javascript(根据相关性删除部分):
$(document).ready(function () {
slidePos = 1;
runInterval = 7000;
setTimeout(AutoScroll, runInterval);
$(".ss-right-arrow").click(function () {
SlideRight();
runInterval = false;
setTimeout(function () {
runInterval = 7000;
AutoScroll();
}, 15000);
});
$(".ss-left-arrow").click(function () {
SlideLeft();
runInterval = false;
setTimeout(function () {
runInterval = 7000;
AutoScroll();
}, 15000);
})
});
function AutoScroll() {
if (runInterval) {
SlideRight();
setTimeout(AutoScroll, runInterval);
}
}
function SlideRight() {
slidePos = slidePos + 1;
if (slidePos <= $(".ss-slide").length) {
$(".ss-container").css("margin-left", -((slidePos - 1) * $(".ss-slideshow").width()) + "px");
$(".ss-indicator-arrow").css("left", ($(".ss-indicator-arrow").width() * (slidePos - 1) + "px"));
}
else
Reset();
}
function SlideLeft() {
slidePos--;
if (slidePos > 0) {
$(".ss-container").css("margin-left", -((slidePos - 1) * $(".ss-slideshow").width()) + "px");
$(".ss-indicator-arrow").css("left", ($(".ss-indicator-arrow").width() * (slidePos - 1) + "px"));
}
else {
slidePos = $(".ss-slide").length;
$(".ss-container").css("margin-left", -((slidePos - 1) * $(".ss-slideshow").width()) + "px");
$(".ss-indicator-arrow").css("left", ($(".ss-indicator-arrow").width() * (slidePos - 1) + "px"));
}
}
我已经尝试了多种间隔方法(例如i ++,++ i,+ = 1等),并尝试将间隔移到函数外部,但都没有产生结果。
所以问题是:
为什么我的功能“记住”用户输入以及如何阻止它?