使用jquery随机化显示和隐藏的div的顺序

时间:2013-05-22 16:48:30

标签: javascript jquery html

目前我正在使用这个jquery代码,我从这里的另一篇文章中删除了一些div进出

<script>
$(document).ready(function () {
    var divs = $('div[id^="feature-"]').hide(),
        i = 0;
    (function cycle() {
        divs.eq(i).fadeIn(400)
            .delay(5000)
            .fadeOut(400, cycle);
        i = ++i % divs.length;
    })();
});    
</script>

循环浏览一些div,让它们淡入淡出并以一种随意的幻灯片形式淡出。我想在页面加载时随机化显示的顺序,例如,它现在显示feature-1,然后是feature-2,然后是feature-3。如何让它随机化该顺序,例如有时onload会显示feature-3,feature-1,feature-2,有时它会显示feature-2,feature-1,feature-3等等。我试过创建一个数组然后随机化1到10之间的数字并将它们放在索引0-9中,但我尝试后根本无法显示它。这是一个展示它正在做什么的小事。

http://jsfiddle.net/gthes/

2 个答案:

答案 0 :(得分:1)

使用Math.Random()

http://www.w3schools.com/jsref/jsref_random.asp

实施例: 随机数从1到6

$(document).ready(function () {
    var divs = $('div[id^="feature-"]').hide(),
        i = 0,
        lastIndex=-1;
    (function cycle() {
         do{     
            i = Math.floor((Math.random()*6));       
         }while(i==lastIndex);

        divs.eq(i).fadeIn(400)
            .delay(5000)
            .fadeOut(400, cycle);      

         lastIndex=i;

    })();
}); 

答案 1 :(得分:1)

$(document).ready(function () {
    var divs = $('div[id^="feature-"]').hide(), last_index = false;

    function get_random_index(max) {
        return Math.floor(Math.random() * max);
    }

    function cycle() {
        var i;
        do {
            i = get_random_index(divs.length);
        } while (i === last_index);
        last_index = i;     
        divs.eq(i).fadeIn(400).delay(5000).fadeOut(400, cycle);
    }
    cycle();
});