我尝试编写setTimeout
执行的Java Script语句。我的代码将元素添加到画布。我想获得一种动画,其中一些图形元素在几秒钟之后逐个添加到画布中。
我试过了:
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))
}
}
但是我得到的只是 延迟后立即执行的所有状态 。我真的认为每个setTimeout
都是循环中的一步。对于每次 n 次迭代,我会有 n 延迟。
使用jQuery或任何库有没有简单的方法呢?
答案 0 :(得分: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) ;
答案 1 :(得分: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))
}
}
答案 2 :(得分:0)
在jQuery中尝试setInterval()
setInterval(function() {
// Do something every 5 seconds
}, 5000);