Jquery 我如何让它在到达最后一张幻灯片时重新启动循环?
我将这些指示器链接到每一张幻灯片,但当我到达第11张幻灯片时,如果我继续在所有幻灯片中循环,它将停止。我需要它在12号后回到1号。有人能帮忙吗Jquery 我如何让它在到达最后一张幻灯片时重新启动循环?,jquery,Jquery,我将这些指示器链接到每一张幻灯片,但当我到达第11张幻灯片时,如果我继续在所有幻灯片中循环,它将停止。我需要它在12号后回到1号。有人能帮忙吗 for (var i = 1; i <= 12; i++) { if (jQuery('#slide-' + i).is(':visible')) { console.log('#slide-' + i); jQuery('#page_count-' + i).addClass('active'); } else {
for (var i = 1; i <= 12; i++) {
if (jQuery('#slide-' + i).is(':visible')) {
console.log('#slide-' + i);
jQuery('#page_count-' + i).addClass('active');
} else {
jQuery('#page_count-' + i).removeClass('active');
};
};
(变量i=1;i)的
编辑:就像TrueBlueAusie建议的那样,删除了循环解决方案
编辑2:愚蠢的逻辑错误,修复,再次感谢TrueBlueAusie。
这将快速运行前12个呼叫,然后延迟5秒,然后重试
重新启动。就我个人而言,我会为此使用递归函数,而不是循环
var current_slide = 1;
var number_of_slides = 3;
var time_between_slides = 3000; // ms
var nextSlide = function() {
// do your stuff that changes slides here
if (current_slide < number_of_slides) {
current_slide++;
} else {
current_slide = 1;
}
window.setTimeout(function() {
nextSlide() // function calls its self, creating an "infinite loop"
}, time_between_slides);
};
window.setTimeout(function() {
nextSlide(); // initially call the function to go to the next slide
}, time_between_slides);
var-current\u-slide=1;
var编号\u的\u幻灯片=3;
两张幻灯片之间的var时间=3000;//ms
var nextSlide=函数(){
//在这里做些改变幻灯片的事情
if(当前幻灯片<幻灯片数量){
当前幻灯片++;
}否则{
当前滑动=1;
}
setTimeout(函数(){
nextSlide()//函数调用其自身,创建一个“无限循环”
},幻灯片之间的时间);
};
setTimeout(函数(){
nextSlide();//首先调用函数以转到下一张幻灯片
},幻灯片之间的时间);
如果(i==12){i=1;},尝试将其更改为
。要知道,现在设置for循环的方式会导致无限循环,这可能会使javascript引擎过载并使浏览器无响应。看到这么多人只是复制他的错误。setTimeout/setInterval,people!+1因为提供了这两种代码并引起了一些争论:)是的,循环实际上是为了尽可能快地处理事情,而不是为了定时的视觉事件,我建议将来使用JSFIDLE来演示预期目标。为什么使用setTimeout
递归,而不仅仅是使用setInterval
?@Kippie-我使用setTimeout,因为在我再次调用函数自身之前,我可以让它检查幻灯片是否已进入“暂停模式”。@TrueBlueAussie fyi,它仍然是一个无限循环,但被延迟:)@xFortyFourx:它不是一个无限循环。。。它是一个事件驱动的回调,碰巧调用自己。。。巨大的区别:)@xFortyFourx实际上不是。该函数使用setTimeout
对新调用进行排队,但会立即返回并将控制权返回给主javaScript线程。第二个答案更好,但看在上帝的份上,删除第一个答案(除了每秒更新类1000次之外,它什么也不做……实际上什么也不做):)谢谢大家的快速回复。。。。我会实施你的想法,看看我能得到什么。再次感谢您可以使用i=(i-1)%12+1
获得相同的数字环绕。您是否打算在计时器回调中传递1或i?有些奇怪的事情发生了。现在我的页面无法加载。我想如果(i==12){i=1;},我会尝试添加这个
var current_slide = 1;
var number_of_slides = 3;
var time_between_slides = 3000; // ms
var nextSlide = function() {
// do your stuff that changes slides here
if (current_slide < number_of_slides) {
current_slide++;
} else {
current_slide = 1;
}
window.setTimeout(function() {
nextSlide() // function calls its self, creating an "infinite loop"
}, time_between_slides);
};
window.setTimeout(function() {
nextSlide(); // initially call the function to go to the next slide
}, time_between_slides);