Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 获取图像滑块以自动播放_Jquery_Image_Timeout - Fatal编程技术网

Jquery 获取图像滑块以自动播放

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

我正在尝试让自己的图像滑块以4000毫秒的间隔自动播放。我尝试过使用
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调用该函数)。首先,你需要一些东西来启动循环。把它想象成把一个滑环推过楼梯边缘。一旦你启动它,它就会继续运行,但你必须先推它一把才能启动。好的,我现在明白了!非常感谢!如果你喜欢我的答案,请你投票并/或接受答案。谢谢!嗨,安德。我只是想指出,当我点击“下一步”按钮时,这会导致计时器速度减半。不过我自己解决了这个问题。再次感谢!