2011-01-21 153 views
1

我有5張圖片(pic-1.jpg,pic-2.jpg ...等)。這5張圖片加載到數組中並與文字相關聯(caption)我喜歡存檔(使用jquery或javascript)是:每次加載網站時,隨機獲取訂單,下一張圖像後獲取下一張圖像,而不顯示直到結束時顯示的圖像。簡單的顯示隨機顯示

我也想用隨機生成的第一顯示,並推來獲得另一個

你有更好的anothe功能...隨機不重複,直到顯示所有的曾經...

是否清楚?...我會解釋更多,如果需要!

+0

我評估了pop()方法,但它可以附加人們會旋轉5張圖片,並第一個必須再次顯示... POP是不好的 – menardmam 2011-01-21 16:37:59

回答

1

通過搜索 '的JavaScript隨機陣列' 我發現了一個網頁約fisherYates陣列洗牌算法: http://sedition.com/perl/javascript-fy.html

這裏的相關代碼:

function fisherYates (myArray) { 
    var i = myArray.length; 
    if (i == 0) return false; 
    while (--i) { 
    var j = Math.floor(Math.random() * (i + 1)); 
    var tempi = myArray[i]; 
    var tempj = myArray[j]; 
    myArray[i] = tempj; 
    myArray[j] = tempi; 
    } 
} 

我已經用它做了一個小例子: http://www.jsfiddle.net/fftWg/

+0

該死的,這很好! – menardmam 2011-01-21 17:22:22

0

基本的想法是有一個隨機數組並從頂部彈出每次你'下'直到你用盡陣列,然後重複。

0

從數組大小中獲取您的隨機數。並且每次顯示圖像時都會從陣列中移除該項目。數組爲空後,重新開始。

0

你的意思是這樣的: 代碼:

function RandomSlider() 
{ 
    var self  = this; 
    this.pictures = new Array(); 
    this.timeout = 2000; // wait 2000 ms 
    this.aniTime = "fast" or 1500; 

    // generate a random number 
    this.randomStart = function() 
    { 
     return Math.floor(Math.random() * self.pictures + 1); 
    } 

    this.SetAnimate = function(arrIndex) 
    { 
     setTimeout(function() 
     { 
      // do animation or what you want 
      $(....).animate({ .... }, self.aniTime, 'linear', function() 
      { 
       // do stuff when you are done with animation 

       if(arrIndex == self..pictures.length) 
       { 
        // when the random index is the last item in your case image 5 and array index 4 
        // then start over again, start with array index 0 
        self.SetAnimate(0); 
       } 
       else 
       { 
        // set the next slider item ready 
        self.SetAnimate(arrIndex + 1); 
       } 
      }); 
     }, self.timeout); 
    } 

    this.StartSlider = function() 
    { 
     // start animation 
     this.SetAnimate(this.randomStart()); 
    } 
} 

用法:

/

/ you can put in the array ID's classes attr urls all you want 
    var picture_array = new Array(); 
    picture_array[0] = "image1"; 
    picture_array[1] = "image2"; 
    picture_array[2] = "image3"; 
    picture_array[3] = "image4"; 
    picture_array[4] = "image5"; 

    var slider = new RandomSlider(); 
    slider.pictures = picture_array; 
    slider.StartSlider();