2014-10-30 82 views
2

我想随机在flexslider上的幻灯片顺序。随机选项只允许您在加载时随机化订单。我在下面的代码拼凑在一起的帮助下: Flexslider Start at a random slide and then continue loading sequentiallyFlexslider动画后的随机顺序

任何想法我做错了什么?

$(window).load(function() { 
    var randomthis = Math.floor((Math.random()* $('.flexslider li').length)+1); 
    $('.flexslider').flexslider({ 
    after: function(slider) { 
    startAt: randomthis 
    }, 
    }); 
}); 

回答

2

FlexSlider支持随机幻灯片。 您可以使用下面的代码

$(window).load(function() { 
    $('.flexslider').flexslider({ 
     randomize: true 
    }); 
}); 

对于您的要求,您可以使用下面的代码。

$(window).load(function() { 
    var randomthis = Math.floor((Math.random()* $('.flexslider li').length)); 
    $('.flexslider').flexslider({ 
     after: function(slider) { 
      startAt: randomthis 
     }, 
    }); 

    // **CAUTION** the below code will remove ALL the setTimeouts 
    var highestTimeoutId = setTimeout(";"); 
    for (var i = 0 ; i < highestTimeoutId ; i++) { 
     clearTimeout(i); 
    } 

    // This code will add a new setTimeout function for randomizing the 
    a = function(){ 
     var newrandval = Math.floor((Math.random()* $('.flexslider li').length)); 
     while(randomthis == newrandval){ 
      newrandval = Math.floor((Math.random()* $('.flexslider li').length)) 
     } 
     randomthis = newrandval; 
     $('.flexslider').flexslider(randomthis); setTimeout(a,3000) 
    } 
    a(); 
}); 
+0

他们这样做,但只有前负荷。假设我有幻灯片1,2,3,4。使用你的代码,如果我刷新了,他们现在将是4,2,1,3并保持这个顺序。我要找的是加载后的随机顺序。 – DerickB 2014-10-31 12:33:14

+0

尝试更新一个。 – 2014-10-31 12:59:46

0

这里是你的代码的工作样机,使用startAt代替after函数; http://jsbin.com/kunizo/1/edit?js,output

$(window).load(function() { 
    // create function that returns random number 
    var random = function(num){ 
    var numRandom = Math.floor((Math.random()* num)); 
    return numRandom; 
    }; 
    // create variable with slides length; 
    var slidesLength = $('.flexslider li').length 
    // init flexslider and start at random number 
    $('.flexslider').flexslider({ 
    startAt: random(slidesLength) 
    }); 
});