2014-10-30 2 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

+0

попробуйте обновленный. –

0

вот рабочий макет вашего кода, используйте startAt вместо функции; 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) 
    }); 
});