JS InfiniteRotator Random Order

JS InfiniteRotator Random Order

本文关键字:Order Random InfiniteRotator JS      更新时间:2023-09-26

我在我的网站上有一个图像旋转器,但我希望图像以随机顺序出现,这样相同的图像并不总是第一。我有旋转器工作,但我不知道如何随机化它。我的代码是在JS Bin这里:http://jsbin.com/dogimawuli/edit?html,output

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Test</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js?ver=3.0.1"></script>
  <script>
  $(window).load(function() {   
    var InfiniteRotator = 
  {
    init: function()
    {
        //initial fade-in time (in milliseconds)
        var initialFadeIn = 1000;
        //interval between items (in milliseconds)
        var itemInterval = 4000;
        //cross-fade time (in milliseconds)
        var fadeTime = 50;
        //count number of items
        var numberOfItems = $('.rotating-item').length;
        //set current item
        var currentItem = 0;
        //show first item
        $('.rotating-item').eq(currentItem).fadeIn(initialFadeIn);
        //loop through the items        
        var infiniteLoop = setInterval(function(){
            $('.rotating-item').eq(currentItem).fadeOut(fadeTime);
            if(currentItem == numberOfItems -1){
                currentItem = 0;
            }else{
                currentItem++;
            }
            $('.rotating-item').eq(currentItem).fadeIn(fadeTime);
        }, itemInterval);   
     }  
  };
  InfiniteRotator.init();
});
  </script>
  <style>
    #rotating-item-wrapper {position: relative;width: 468px;height: 60px;float: right;}
    .rotating-item {display: none;position: absolute;top: 0;left: 0;}
  </style>
</head>
<body>
    <div id="rotating-item-wrapper">
      <div style="width:400px;height:60px;background:red;"class="rotating-item">1</div>
      <div style="width:400px;height:60px;background:green;"class="rotating-item">2</div>
      <div style="width:400px;height:60px;background:blue;"class="rotating-item">3</div>
   </div>
</body>
</html>

try this:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Test</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js?ver=3.0.1"></script>
  <script>
  $(window).load(function() {   
      debugger;
    var InfiniteRotator = 
  {
    init: function()
    {
        //initial fade-in time (in milliseconds)
        var initialFadeIn = 1000;
        //interval between items (in milliseconds)
        var itemInterval = 4000;
        //cross-fade time (in milliseconds)
        var fadeTime = 50;
        //count number of items
        var numberOfItems = $('.rotating-item').length;
        //set current item
        var currentItem = Math.floor(Math.random() * numberOfItems)

        //show first item
        $('.rotating-item').eq(currentItem).fadeIn(initialFadeIn);
        //loop through the items        
        var infiniteLoop = setInterval(function(){
            $('.rotating-item').eq(currentItem).fadeOut(fadeTime);
            nextItem = currentItem;
            while(currentItem == nextItem) {
                nextItem = Math.floor(Math.random() * numberOfItems);
            }
            currentItem = nextItem;
            $('.rotating-item').eq(currentItem).fadeIn(fadeTime);
        }, itemInterval);   
     }  
  };
  InfiniteRotator.init();
});
  </script>
  <style>
    #rotating-item-wrapper {position: relative;width: 468px;height: 60px;float: right;}
    .rotating-item {display: none;position: absolute;top: 0;left: 0;}
  </style>
</head>
<body>
    <div id="rotating-item-wrapper">
      <div style="width:400px;height:60px;background:red;"class="rotating-item">1</div>
      <div style="width:400px;height:60px;background:green;"class="rotating-item">2</div>
      <div style="width:400px;height:60px;background:blue;"class="rotating-item">3</div>
   </div>
</body>
</html>

基本上你是在循环下一个随机数,这个随机数与当前图像不同,缺点是某些图像将被"饿死",直到随机数选择该图像编号。