2014-02-25 67 views
1

我試圖編寫由setTimeout執行的Java腳本語句。我的代碼將元素添加到畫布。我想獲得一種動畫,其中一些圖形元素在其中幾秒鐘後逐個添加到畫布上。如何使用setTimeout獲得時間執行速度?

我想:

for (series in respuesta) { 
    if (series != "x" && series != "y" && series != "raiz") { 
     (function(x){ 
      setTimeout(function(){ plot.highlight(1,[respuesta[x].a,0]) 
            plot.highlight(1,[respuesta[x].b,0])}, 
            2500,c,x);      
      c++; 
     }(series)) 

    }  
} 

但是我得到的是在延遲一段時間後,一旦執行的所有staments。我真的認爲,因爲每個setTimeout是一個循環中的一步。我會有n延遲每個總共n迭代。

是否有任何簡單的方法來使用jQuery或任何庫來做到這一點?

+0

你試過setInterVal()嗎?創建小提琴也許是個好主意?添加最後一個參數:time –

+1

我認爲'setTimeout'的語法是錯誤的。只允許2個參數。 'setTimeout(function(){// Your execution statement},2500);' – Praveen

回答

1

您設定在一個循環超時。爲什麼不爲每個循環迭代增加2500ms,以便它們均勻分佈,而不是僅延遲相同的數量。

var timeout = 2500; 
for (series in respuesta) { 
    if (series != "x" && series != "y" && series != "raiz") { 
     (function(x){ 
      setTimeout(function(){ plot.highlight(1,[respuesta[x].a,0]) 
            plot.highlight(1,[respuesta[x].b,0])}, 
            timeout,c,x);      
      c++; 
      timeout += 2500; 
     }(series)) 

    }  
} 
0

嘗試的setInterval()jQuery中

setInterval(function() { 
     // Do something every 5 seconds 
}, 5000); 
+0

這不適合這個問題。這每5秒執行相同的執行,而OP則根據循環更改執行。 – Praveen

+0

你好Praveen你能告訴我這個代碼在每次執行時輸出相同的結果嗎var i = 0; \t \t的setInterval(函數(){ \t \t \t警報(ⅰ); \t \t \t我++;} ,5000);' – Sarath

+0

這僅僅是普通的JavaScript,不jQuery的。 – jeremyjjbrown

3

您應該使用setInterval()。這在一定的時間間隔內反覆重複相同的功能:

var i = 0; 
var myItems = ["a", "b", "c"] 
var myHandle = setInterval(function() { 

    // Add new items here. 

    i++; 

    if (i >= myItems.length) { 
     clearInterval(myHandle); 
    } 

}, 1000) ; 
相關問題