【问题标题】:Simple jquery photo slideshow简单的 jquery 照片幻灯片
【发布时间】:2011-02-16 07:58:07
【问题描述】:

我想编写自己的幻灯片脚本,但最终结果是它立即跳转到图像 6 并剧烈闪烁(淡出)...... HTML 只是一个图像 id="ss1" 的页面。

var i = 1;

$(document).ready(function(){
    slideShow();
});
var t;
function runSlideShow() {
    if(i >= 7) i = 1;
    $("#ss1").fadeTo("slow",0);
    document.getElementById('ss1').src = "img/" + i + ".jpg";
    $("#ss1").fadeTo("slow",1);
    i += 1;
    t = setTimeout(slideShow(), 5000);  
}

【问题讨论】:

    标签: jquery slideshow


    【解决方案1】:

    我认为问题在于你使用

    t = setTimeout(slideShow(), 5000);
    

    slideShow() 立即再次执行 slideShow() 函数。尝试将其替换为:

    t = setTimeout('slideShow()', 5000);
    

    相反。请注意,这使用了 eval,这被认为是不安全的(但在这种情况下不是)并且速度很慢。

    淡出不起作用,因为淡入淡出在您的代码中异步运行,这意味着它在淡入淡出的同时淡入淡出(这显然会发生一些奇怪的情况)。

    function runSlideShow() {
        if(i >= 7) i = 1;
        $("#ss1").fadeTo("slow",0, function() {
            document.getElementById('ss1').src = "img/" + i + ".jpg";
            $("#ss1").fadeTo("slow",1, function() {
                i += 1;
                t = setTimeout('slideShow()', 5000);
            });
        });  
    }
    

    应该可以。由于 function() { } 之间的代码现在将在淡入淡出完成后执行。

    【讨论】:

    • @pdel:在一些额外的帮助下编辑了帖子
    • 你为什么要传递'slideShow()'而不是幻灯片?例如:setTimeout(slideShow, 5000)
    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    相关资源
    最近更新 更多