2013-07-08 98 views
0

我已經做了一個「圖像旋轉」使用幾個數組和循環。這是一個朋友,有一些網站。在那些網站上有他想每隔幾秒鐘就會出現的廣告。我已經完成了它,但是想要利用更多的循環和陣列,所以當他在不同的網站上使用它時,他的更改會更少或更少。Javascript圖像旋轉環

這裏是JavaScript

(function() { 

    var NOI = 12;     // number of images 
    var delayInSeconds = 5;  // set number of seconds delay 
    var imageDir = 'images_ad/'; // change to match images folder 

    // list image names 

    var ImageNames = new Array(NOI); 
     ImageNames[0] = 'ad1.jpg'; 
     ImageNames[1] = 'ad2.jpg'; 
     ImageNames[2] = 'ad3.jpg'; 
     ImageNames[3] = 'ad4.jpg'; 
     ImageNames[4] = 'ad5.jpg'; 
     ImageNames[5] = 'ad6.jpg'; 
     ImageNames[6] = 'ad7.jpg'; 
     ImageNames[7] = 'ad8.jpg'; 
     ImageNames[8] = 'ad9.jpg'; 
     ImageNames[9] = 'ad10.jpg'; 
     ImageNames[10] = 'ad11.jpg'; 
     ImageNames[11] = 'ad12.jpg'; 

     // do not change below this line ---------------------------------// 


     var changeImage = function() { 
      var arr = [] 
      while(arr.length < NOI){ 
       var randomnumber=Math.floor(Math.random()*(NOI)) 
       var found=false; 
       for(var i=0;i<arr.length;i++){ 
        if(arr[i]==randomnumber){found=true;break} 
       } 
       if(!found)arr[arr.length]=randomnumber; 
      } 
      var num = []; 
      var rotator = [] 
      for (var i=0; i<NOI; i++){ 
       rotator[i] = document.getElementById('rotator' + i);    

       num[i] = arr[i] 
       for (var x = 1; x < num.length; x++) { 
        rotator[x].src = imageDir + ImageNames[num[x]]; 
       } 

      }  
    }; 
    setInterval(changeImage, delayInSeconds * 1000); 
})(); 

這樣,他將只需要設定時間,文件夾名稱,並增加他們的名字/減少廣告清單。之前有3個其他名單會增加/減少。我知道這可能不是最大的一個肩膀,但我並不完全是一個瘋子。它似乎正常工作減去最後的圖像不變。

問題如上所述,最後一張圖片沒有改變。我有一種感覺,問題出現在最後一個循環中,但我嘗試了所有我能想到的並且無法實現的工作。

HTML端將沿的線條看起來:

<img src="ad1.jpg" alt="rotating image" width="150" height="82" id="rotator1" /> 
<br/> 
<img src="ad2.jpg" alt="rotating image" width="150" height="82" id="rotator2" /> 
<br/> 
<img src="ad3.jpg" alt="rotating image" width="150" height="82" id="rotator3" /> 
<br/> 
... 

如果你需要什麼我可以嘗試,並提供它,但我認爲是幾乎所有有。感謝任何能提供幫助,建議和指針的人。

+0

爲什麼不只是使用sequence.js – Petah

+0

你可能想看看這個解決方案的類似問題:http://stackoverflow.com/a/12646864/495935這將以一種簡單的方式洗牌你的數組,並給予很好的隨機結果。然後刪除並重新渲染圖像數組。 –

回答

1

該問題可能是在這裏:

while(arr.length < NOI) 

因爲最後一張圖片上,arr.length將等於NOI,其不通過你的小於測試,並從while循環將不會執行。嘗試,而不是寫這個:

while(arr.length <= NOI) 

此外,拋出一些console.log語句有報道它在做什麼在每次循環。您可以通過幾種方式查看控制檯輸出(其中包括firefox上的firebug)。如果你不熟悉這個過程,你可以閱讀關於瀏覽器中的javascript調試;它會幫助你一噸。

祝你好運!