這就是我試圖做FOR循環內的setInterval?
for (i=1; i<=1000; i+=100) {
setInterval(someFunction, i);
}
我想實現的是,當頁面加載對話框將會出現和它的影子會閃動慢,然後快速將停止當i = 1000。 我是新手,迄今爲止,我做了this。
這就是我試圖做FOR循環內的setInterval?
for (i=1; i<=1000; i+=100) {
setInterval(someFunction, i);
}
我想實現的是,當頁面加載對話框將會出現和它的影子會閃動慢,然後快速將停止當i = 1000。 我是新手,迄今爲止,我做了this。
閱讀是否有可能或不?
是的。假設someFunction
是對函數或包含JavaScript代碼的字符串的引用,for循環將按原樣「工作」,其中「work」的意思是「不給出語法錯誤,但幾乎肯定不會達到我想象中的真正想要的效果」。
setInterval()
function調用你通過它的函數重複,每次調用之間有一個固定的(受瀏覽器怪癖)延遲。只要該頁面處於打開狀態,或者直到您使用clearInterval()
來取消該功能,它都會一直調用該功能。
所以通過在循環中調用setInterval()
您正在設置(在您的情況下)10個獨立的時間間隔,所有這些時間間隔都會重複調用您的函數。第一個調用someFunction
的時間間隔爲0ms,這比瀏覽器實際使用的時間要小,所以會被舍入到更多像4ms。第二個間隔將以100ms間隔呼叫someFunction
。第三個以200ms的間隔調用該函數。等等。在你的循環結束後,你的函數每秒會被重複調用的次數比我可以計算的更多。
看起來你真正想要做的事情是撥打someFunction()
10次,每次通話之間延遲100ms。如果是這種情況,則可以在循環中使用setTimeout()
function,因爲(每次使用)setTimeout()
都會在指定的延遲後恰好調用您的函數一次。
您不需要將循環中的設置間隔設置爲多次運行。
試圖通過本教程javascript.info
這恰好也是一個不好的例子。將一串JS代碼傳遞給'setInterval'是20世紀90年代。我認爲即使這樣很糟糕。我們只是不知道更好。 :P – cHao 2012-03-01 02:27:49
@cHao - 如果返回足夠遠的話,傳遞一個字符串是唯一的選擇。 – nnnnnn 2012-03-01 02:51:56
對不起,我沒有意識到w3schools是如此糟糕的資源。 – user1239299 2012-03-01 03:05:48
太糟糕了。如果您告訴我們什麼不起作用以及您得到了哪個錯誤,我們可能會幫助您。 – 2012-03-01 01:59:57
你的意思是「它沒有解決」?如果你在問題中沒有提供足夠的細節,我們不能提供幫助 - 你需要說明爲什麼它不起作用;你想要什麼樣的行爲以及你想要做什麼樣的行爲。 – Bojangles 2012-03-01 02:00:18
你想完成什麼?它怎麼沒用? – 2012-03-01 02:00:36