我尝试编写由setTimeout执行的Java语句。我的代码将元素添加到画布中。我想要获得一种动画,其中一些图形元素被添加到画布上一个接一个,几秒钟后,其中。
我试过:
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或任何库来做到这一点?
发布于 2014-02-25 04:24:34
您是在循环中设置超时。为什么不为每个循环迭代增加2500‘t,这样它们的间隔才是均匀的,而不是只是延迟了相同的时间。
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))
}
}发布于 2014-02-25 04:25:20
您应该使用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) ;发布于 2014-02-25 04:22:28
尝试setInterval()在jQuery中
setInterval(function() {
// Do something every 5 seconds
}, 5000);https://stackoverflow.com/questions/22004444
复制相似问题