javascript - javascript中三个div的淡入和淡出循环

标签 javascript jquery html fadein fadeout

我用过这个 http://jsfiddle.net/3KydB/ 并尝试将其修改为 3 个 div:

window.switchIn = function () {
    $('.chart_1').fadeToggle(function() {
        $('.chart_2').fadeToggle(function() {
            $('.chart_3').fadeToggle(function() {
                setTimeout(function() {window.switchOut();}, 6000);
            });
         });
    });

}

window.switchOut = function () {
  $('.chart_3').fadeToggle(function() {  
    $('.chart_2').fadeToggle(function() {
        $('.chart_1').fadeToggle(function() {
            setTimeout(function() {window.switchIn();}, 6000);
        });
      });  

    });

}

setTimeout(function() {window.switchIn();}, 6000)

第一个淡入淡出效果很好,然后第二个淡入,第三个淡入其下,然后回到第一个,依此类推。

最佳答案

我认为您会想要如下所示的内容:http://jsfiddle.net/mEeAt/

window.switch1 = function () {
    $('.chart_3').fadeToggle(function() {
        $('.chart_1').fadeToggle(function() {
            setTimeout(window.switch2, 6000);
        });
    });

}

window.switch2 = function () {
    $('.chart_1').fadeToggle(function() {
        $('.chart_2').fadeToggle(function() {
            setTimeout(window.switch3, 6000);
        });
    });
}

window.switch3 = function () {
    $('.chart_2').fadeToggle(function() {
        $('.chart_3').fadeToggle(function() {
            setTimeout(window.switch1, 6000);
        });
    });
}

setTimeout(window.switch2, 6000)

因此每个函数负责淡出事件元素,淡入下一个元素,并为循环中的下一个函数设置超时。

当然,这里有很多重复的代码,因此您最好创建一个函数来使其更通用:http://jsfiddle.net/mEeAt/1/

function cycle(delay) {
    var elements = Array.prototype.slice.call(arguments, 1);
    var functions = [];
    for (var i = 0; i < elements.length; i++) {
        functions.push(function (i) {
            var prev = i === 0 ? elements.length - 1 : i - 1;
            var next = (i + 1) % elements.length;
            return function() {
                elements[prev].fadeToggle(function() {
                    elements[i].fadeToggle(function() {
                        setTimeout(functions[next], delay);
                    });
                });
            };
        }(i));
    }
    functions[1]();  // start cycle by fading in the second element
}
cycle(6000, $('.chart_1'), $('.chart_2'), $('.chart_3'));

关于javascript - javascript中三个div的淡入和淡出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235665/

相关文章:

javascript - 机器人不等待 react 或消息

javascript - 获取字段集中所有 jquery 输入的值

javascript - PhantomJS 页面转储脚本问题

javascript - Angular/Bootstrap : ng-hide not working properly

html - CSS 将切片图像读入 Dreamweaver Div

javascript - 如何使用 JS/CSS 将数字设置为 PRE

javascript - 如何在 Javascript 中垂直居中两个 div?

jquery - 接收新数据时闪烁效果

jquery - 为不同宽度的图像保持相同的位置?

html - 表格间距不正确