0

我有一个显示和隐藏 div 淡入淡出循环,我正在使用它,就像一个带有提示的简短交互式教程。我可以让div按顺序循环;但是,我想在每个暂停循环的提示内添加一个暂停按钮,并能够恢复。如何将该功能添加到我的脚本中?

这是我的js:

$(document).ready(function(){
fadeLoop()
function fadeLoop() {

    var counter = 0,
        divs = $('.fader').css('visibility','visible').hide(),
        dur = 100;

    function showDiv() {
        $("div.fader").fadeOut(dur) // hide all divs
            .filter(function(index) {
                return index == counter % divs.length;
            }) // figure out correct div to show
            .delay(dur) // delay until fadeout is finished
            .fadeIn(dur); // and show it
        counter++;
    }; // function to loop through divs and show correct div
    showDiv(); // show first div    
    return setInterval(function() {
        showDiv(); // show next div
    }, 4 * 1000); // do this every 4 seconds    
};

$(function() {
    var interval;

    $("#start").click(function() {
        if (interval == undefined){
            interval = fadeLoop();
            $(this).val("Stop");
        }
        else{
            clearInterval(interval);
            $(this).val("Start");
            interval = undefined;
        }
    });
});
});

这是我的小提琴:更新的小提琴

4

1 回答 1

1

我已经通过使用全局变量window.i作为计数器来解决

function fadeLoop() {

    var divs = $('.fader').hide(),
        dur = 200;

    function showDiv() {
        divs.fadeOut(dur) // hide all divs
            .filter(function(index) {
                return index == window.i % divs.length;
            }) // figure out correct div to show
            .delay(dur) // delay until fadeout is finished
            .fadeIn(dur); // and show it
        window.i++;
    }; // function to loop through divs and show correct div
    showDiv(); // show first div    
    return setInterval(function() {
        showDiv(); // show next div
    }, 1 * 1000); // do this every 5 seconds    
};

$(function() {
    var interval;
    window.i = 0;

    $("#start").click(function() {
        if (interval == undefined){
            interval = fadeLoop();
            $(this).val("Stop");
        }
        else{
            clearInterval(interval);
            $(this).val("Start");
            interval = undefined;
        }
    });
});
于 2013-02-05T18:44:53.180 回答