我剛開始看javascript,所以希望這會很簡單。我想製作一個自動播放圖像的幻燈片。這非常簡單,並且有幾個教程,但由於某些原因,我無法使其工作。這是我的:Javascript遞歸settimeout
var image1 = new Image();
var image2 = new Image();
var image3 = new Image();
image1.src = "images/website6.jpg";
image2.src = "images/website7.jpg";
image3.src = "images/sunset.jpg";
var images = new Array(
"images/website6.jpg",
"images/website7.jpg",
"images/sunset.jpg"
);
setTimeout("delay(images,0)",2000);
function delay(arr,num){
document.slide.src = arr[num % 3];
var number = num + 1;
setTimeout("delay(arr,number)",1000);
}
我試圖改變的圖像有id幻燈片。而且我也有一些證據表明它有效。發生的第一個圖像加載。然後加載第二個圖像(這意味着原始setTimeout調用必須工作)。然後沒有任何反應對我而言,這表明這是遞歸不起作用。
我對其他語言的遞歸非常熟悉,所以我認爲它只是一個語法的東西或什麼,但我似乎無法弄清楚。謝謝你的幫助。
取消引用第二個setTimeout中的參數。那將是我的第一個猜測。 – Cronco 2011-04-05 22:55:51
@Cronco有趣的是,如果我這樣做,我不會得到第二個圖像...這表明這是什麼使圖像更改一次。此外,我見過的每個示例都有引號,這就是爲什麼我放入它們的原因。 – Paul 2011-04-05 22:59:37
引用變量的問題在於定時器正在運行完整字符串'「delay(arr,number)」'而不是將變量到它們的存儲值 - 這就是爲什麼不引用它會起作用的原因(儘管你仍然需要像這樣引用它們......'「delay(''+ arr +'',''+ number +'')'。然而,爭議點 - Pointy的回答比較好,我只是在解釋發生了什麼。 – 2011-04-05 23:40:50