2012-08-14 142 views
0

我想將圖像更改爲圖像「i」,直到圖像用完,然後我想從頭開始。運行一個循環,然後重置並再次運行它

這是我需要做的

  • 運行下面的代碼,直到我> = N
  • 然後復位I爲零

代碼:

function advanceSlide() 
    { 
    i++; 
    currentIMG ='"image"+i'; 
    changeBG(currentIMG); 
    } 

這是我到目前爲止,我只是休息當循環完成:

window.setInterval(function(){ 
    advanceSlide(); 
    }, 5000); 

    function advanceSlide(){ 
    while (i<n){ 
     i++; 
     currentIMG='"Image"+i'; 
     changeBG(currentIMG); 
    } 
    }; 

這涵蓋了什麼,我需要的時候我<ñ,讓我怎麼告訴它做什麼,當不小於ň

回答

1

使用更清晰的未來添了全球imgIndex

imgIndex = 0; 
noOfImages = 10; 

function advanceSlide(){ 
    imgIndex++; 
    if(imgIndex >= noOfImages) { imgIndex = 0; } 
    currentIMG = "Image" + imgIndex; 
    changeBG(currentIMG); 
} 
+0

完美。謝謝,這就是我需要的。 – 2012-08-14 01:40:05

0

請你的問題即

int i = 0; 
while (true){ 
     i++; 
     if (i<n){ 
      currentIMG='"Image"+i'; 
      changeBG(currentIMG); 
     } 
     else 
     { 
      i = 0; 
     } 
} 
0

當我> = N,則它會簡單地退出循環,並繼續與你的同時(後放置任何代碼){}

與你設定的時間間隔,沒有必要爲一個封閉有因爲它只有一個調用其他功能,可以簡化爲window.setInterval(advanceSlide, 5000);

你也可以更換while循環與for循環,因爲你只是增加一個索引

window.setInterval(advanceSlide, 5000); 

function advanceSlide() { 
    for(i = 0; i < n; i++) { 
     // also here don't really need to store in a variable just pass straight in 
     changeBG("Image" + i) 
    } 
} 

我假設這個答案,你的區間是你想如何回憶這個函數......這裏的另一個答案顯示使用一個while(1)循環與你的另一個循環內部的方式來循環一遍又一遍,沒有計時器

1

你不需要在功能中包裝advanceSlide。你可以使用模數得到重置我

window.setInterval(advanceSlide, 5000); 
function advanceSlide(){  
    i = (i+1)%n; 
    currentIMG="Image"+i; 
    changeBG(currentIMG); 
} 
+0

作出了upvote,因爲即使其他被接受,這也是最好的答案。現在我刪除了我的意見,所以不要混淆任何其他人在未來發現此Q ...對不起 – 2012-08-14 03:38:26

相關問題