2016-04-05 83 views
1

我有這樣的腳本:使用Javascript - 睡眠()在for循環

var array = []; 
array[0] = 'http://facebook.com/'; 
array[1] = 'http://instagram.com/'; 
array[2] = 'http://twitter.com'; 

$(document).ready(function() 
{ 
    for(i=0; i<= 2; i++) 
    { 
     $('#ifr').attr('src', array[i]); 
     // sleep here for 0,5 second 
    } 
}); 

和我如何能阻止這種循環0.5秒?

+0

沒有在JavaScript沒有睡覺.... –

+0

@Pamblam所以給我一個替代JavaScript。 – Majkson

+0

@blex能給我一個例子嗎? – Majkson

回答

4

您可以使用setTimeout爲了這個目的,

for(i=0; i<=2; i++) { 
    setTimeout(function(i) { 
    $('#ifr').attr('src', array[i]); 
    },500 * i,i); 
    //1000 ms is 1 sec, here I have give 0.5 seconds as a delay. 
} 

沒有必要處理關閉問題創建每次迭代的範圍。您可以使用setTimout的第三個參數來設置callBack函數的參數。

1
(function rec(i){ 
    setTimeout(function(){ 
     $('#ifr').attr('src', array[i]); 
     if(i <= 2) rec(i+1); 
    }, 5000); 
})(0); 

編輯:添加if(i <= 2)所以它不會永遠遞歸..這將經過2次迭代停止..

+0

5000毫秒應該是500毫秒 – digglemister

+0

是的,我剛剛補充說。 –

+0

我怎麼從+3到-1? –