2012-07-29 115 views
1

我試圖執行旋轉橫幅(通過數組調用它)。我設置了一個間隔,但圖像僅在10秒後顯示(10000),然後纔開始旋轉。我刪除陣列的雜亂HTML,但這裏是它的其餘部分:setInterval延遲

var current = 0; 

var banners = new Array(); 
banners[0]=; 
banners[1]=; 
banners[2]=; 
banners[3]=; 

var myTimeout = setInterval("rotater()",10000); 

function rotater() { 
    document.getElementById("placeholderlayer").innerHTML=banners[current]; 
    if(current==banners.length-1){ 
     current = 1; 
    }else{ 
     current += 1; 
    } 
} 

window.onload = rotater(); 
+0

不是你正在問的具體問題,而是值得注意的改進。 'setInterval'應該傳遞一個直接的函數引用,而不是像這樣的字符串:var'myTimeout = setInterval(rotater,10000);' – jfriend00 2012-07-29 23:59:49

回答

3
window.onload = rotater; 

是正確的語法。你不想調用這個函數。然而,防彈解決方案,而這樣的:

onload = function() { 
    rotater(); 
    window.myTimeout = setInterval(rotater, 10000); // Never pass a string to `setInterval`. 
}; 

普羅蒂普™:不要使用new Array(),使用文字的數組。例如,這樣的:

var arr = new Array(); 
arr[0] = 'Hello'; 
arr[1] = 'world!'; 

應該寫成:

var arr = ['Hello', 'world!']; 
+0

真棒,修復和編輯!謝謝。 :) – 2012-07-30 00:42:04

1

只是評論:

相反的:

if(current==banners.length-1) { 
    current = 1; 

} else { 
    current += 1; 
} 

,你可以這樣做:

current = ++current % banners.length;