Jquery 获取图像滑块以自动播放
我正在尝试让自己的图像滑块以4000毫秒的间隔自动播放。我尝试过使用Jquery 获取图像滑块以自动播放,jquery,image,timeout,Jquery,Image,Timeout,我正在尝试让自己的图像滑块以4000毫秒的间隔自动播放。我尝试过使用setTimeout,但似乎无法让它工作。如果有人能帮我,我将不胜感激。下面是滑块的示例: 有没有办法让它自动播放 以下是jQuery代码: $(document).ready(function(){ var images = $('.slider li'); var slides = images.length; var sliderwidth = 500; var currentimage
setTimeout
,但似乎无法让它工作。如果有人能帮我,我将不胜感激。下面是滑块的示例:
有没有办法让它自动播放
以下是jQuery代码:
$(document).ready(function(){
var images = $('.slider li');
var slides = images.length;
var sliderwidth = 500;
var currentimage = 0;
var containerwidth = sliderwidth*slides;
var autoplay = 4000;
$('.slider').css('width', containerwidth);
$('#next').bind('click',nextimage);
function nextimage(){
if(currentimage<slides-1){
currentimage++;
$('.slider').animate({left:-sliderwidth*(currentimage)},{duration:800,easing:'easeInOutCubic'});
}
else{
currentimage = 0;
$('.slider').animate({left:0},{duration:800,easing:'easeInOutCubic'})
}
};
});
$(文档).ready(函数(){
变量图像=$('.slider li');
var slides=images.length;
var滑块宽度=500;
var currentimage=0;
var containerwidth=滑块宽度*幻灯片;
var自动播放=4000;
$('.slider').css('width',containerwidth);
$('#next').bind('click',nextimage);
函数nextimage(){
如果(currentimage我能够设置一个运行非常好的自动播放,使用setTimeout和递归的组合
我给了nextimage()
函数一个参数autoplay
,它是一个布尔值。然后我在函数末尾添加了以下行:
if (autoplay) { setTimeout(function() { nextimage(true); }, 4000); }
最后,我在脚本末尾添加了这一行,以启动自动播放循环:
setTimeout(function() { nextimage(true); }, 4000);
请查看此处的演示,它主要根据您提供的内容构建,并对自动播放进行了一些修改:
简而言之,将布尔值传递到nextimage()中函数,告诉它是否开始自动播放。然后你只需调用一个初始的setTimeout就可以开始了。这个方法的诀窍是,你必须通过setTimeout调用一个匿名函数,setTimeout调用了nextimage函数,autoplay设置为true,因为调用函数时你不能传递参数th setTimeout。这类似于使用jQuery将函数绑定到事件(如单击或悬停)的方法。谢谢!你的方法工作得很好,但我还是有点不理解(我喜欢理解事情,不管它们是否工作)。为什么你必须写两行?为什么第一行不行;>如果(自动播放){setTimeout(function(){nextimage(true);},4000);}自动播放开始吗?在第一次调用该函数后,该行仅会每4秒使其继续运行一次(假设使用autoplay=true调用该函数)。首先,你需要一些东西来启动循环。把它想象成把一个滑环推过楼梯边缘。一旦你启动它,它就会继续运行,但你必须先推它一把才能启动。好的,我现在明白了!非常感谢!如果你喜欢我的答案,请你投票并/或接受答案。谢谢!嗨,安德。我只是想指出,当我点击“下一步”按钮时,这会导致计时器速度减半。不过我自己解决了这个问题。再次感谢!