Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Javascript jQuery设置超时问题_Javascript_Jquery_Settimeout - Fatal编程技术网

Javascript jQuery设置超时问题

Javascript jQuery设置超时问题,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我有一个简单的函数,它可以通过交叉淡入来设置一组图像的动画。一个简单的横幅旋转。我设置了该函数,以便调用animateSlideshow(“play”)它应该设置超时并开始制作动画,通过调用animateSlideshow(“stop”)它应该停止 但是,当我调用stop时,动画会再次出现。这一额外动画的原因是什么?我该如何处理 这将调用底部的函数 function prevSlide(e){ if(curHashIndex !== 0){ $(prevBtn).of

我有一个简单的函数,它可以通过交叉淡入来设置一组图像的动画。一个简单的横幅旋转。我设置了该函数,以便调用
animateSlideshow(“play”)
它应该设置超时并开始制作动画,通过调用
animateSlideshow(“stop”)
它应该停止

但是,当我调用stop时,动画会再次出现。这一额外动画的原因是什么?我该如何处理

这将调用底部的函数

function prevSlide(e){

    if(curHashIndex !== 0){

        $(prevBtn).off();

        // Stop the current slideshow
        animateSlideshow("stop");

        // Reset the current slideshow
        $("li.active .rightSlide > li").fadeOut(600).eq(0).fadeIn(600).addClass("actvImg");

        $(".rightSlides").animate({
            "left" : '+=345'
        }, 600, function(){
            $(prevBtn).on('click', prevSlide);
        });

        $(".leftSlides").animate({
            "left" : '+=417'
        }, 600);

        // Activate the new slide
        $(".rightSlides li.active").removeClass("active").prev().addClass("active");
        activeSlide = $(".rightSlides li.active");
        total = $(".rightSlides li.active .rightSlide > li").length;

        // Start slideshow on the new slide
        var delay = setTimeout(animateSlideshow("play"), 10000);

        updateHash();
    }

}





function animateSlideshow(action){

    if(action === "play"){
        $(activeSlide).data('animateSlideshow', 
            setTimeout(function(){

                if( $(actvImg).index() === total - 1 ){
                    $(actvImg).fadeOut(animationSpeed).removeClass("actvImg").siblings().eq(0).fadeIn(animationSpeed).addClass("actvImg");
                }else{
                    $(actvImg).fadeOut(animationSpeed).removeClass("actvImg").next().fadeIn(animationSpeed).addClass("actvImg");
                }

                actvImg = $(".rightSlides li.active .rightSlide > li.actvImg");
                actvImgIndx = $(actvImg).index();
                updateBreadcrumbs();
                animateSlideshow("play")

            }, animationTimeout)
        );
    }else{
        clearTimeout($(activeSlide).data('animateSlideshow'));
    };

};
您应该使用setInterval()/clearInterval(),而不是使用setTimeout()调用函数

您应该使用setInterval()/clearInterval(),而不是使用setTimeout()调用函数


我不知道为什么它会失败,但我尝试了一个类似的演示,它为我工作

这里


此外,我还用于停止当前动画。如果要停止该对象上的当前动画,可以使用它。

我不知道为什么它会失败,但我尝试了一个类似的演示,它对我有效

这里


此外,我还用于停止当前动画。如果您想停止该对象上的当前动画,可以使用它。

事实上,它对我产生了相同的结果。我最初编写的函数带有间隔。它至少可以防止您使用setTimeout()重新绑定数据-我们可能需要查看调用此函数的内容,或者知道是否存在此问题出现在某个浏览器中。这个函数应该能像预期的那样工作。我用调用函数更新了我的第一篇文章。我找到了它,有一个变量定义,它停留的时间比它应该的时间长。事实上,它对我产生了相同的结果。我最初编写的函数带有间隔。它至少可以防止您使用setTimeout()重新绑定数据-我们可能需要查看调用此函数的内容,或者知道是否存在此问题出现在某个浏览器中。此函数应能按预期工作。我用调用的函数更新了我的第一篇帖子。我发现了它,有一个变量定义存在的时间比它应该存在的时间长。一定是代码中的其他地方出错了。我将尝试添加stop。我的代码中的其他地方一定有错误。我将尝试添加停止。
function animateSlideshow(action){

if(action === "play"){
    $(activeSlide).data('animateSlideshow', 
        setInterval(function(){

            if( $(actvImg).index() === total - 1 ){
                $(actvImg).fadeOut(animationSpeed).removeClass("actvImg").siblings().eq(0).fadeIn(animationSpeed).addClass("actvImg");
            }else{
                $(actvImg).fadeOut(animationSpeed).removeClass("actvImg").next().fadeIn(animationSpeed).addClass("actvImg");
            }

            actvImg = $(".rightSlides li.active .rightSlide > li.actvImg");
            actvImgIndx = $(actvImg).index();
            updateBreadcrumbs();

        }, animationTimeout);
    );
}else{
    clearInterval($(activeSlide).data('animateSlideshow'));
};

};