2014-02-25 30 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) ; 
相关问题