div class 的图形动画和 javascript 的睡眠功能更新未同步完成
graphics animation with div class and sleep function update with javascript not done synchronously
我正在尝试通过 changing a div class
在更改下一个 div class 等几毫秒之前创建一个简单的动画。
问题是我的测试浏览器 (Chrome) 中的图形仅在所有调用结束时刷新,而不是在每次 class 更改后刷新。
for(var i = 0; i < 9 ; i++ ){
document.getElementById(i).setAttribute("class","blueSquare" );
sleep(500);
}
here is the jsfiddle to test
我尝试了 Whosebug 中介绍的各种 hack,但 none 似乎有效。
非常感谢您的帮助。
如果我理解正确的话,您是在尝试以一种间隔一次为 div 着色。您可以看一下 setTimeout,它显然可以达到 sleep 的目的。 setTimeout
在一定时间后执行函数。
你还需要看看closure
,因为setTimeout
是异步操作,但是循环不会因为setTimeout而停止执行
var onClick = function() {
for(var i = 0; i <= 9 ; i++ ){
(function(i){ // creating closure here
setTimeout(function(){
document.getElementById(i).setAttribute("class","blueSquare" );
},i*500) // 1st div will be colored after 500 msec,second div 1000msec, & so on
}(i))
}
};
$('#button').click(onClick);
我正在尝试通过 changing a div class
在更改下一个 div class 等几毫秒之前创建一个简单的动画。
问题是我的测试浏览器 (Chrome) 中的图形仅在所有调用结束时刷新,而不是在每次 class 更改后刷新。
for(var i = 0; i < 9 ; i++ ){
document.getElementById(i).setAttribute("class","blueSquare" );
sleep(500);
}
here is the jsfiddle to test 我尝试了 Whosebug 中介绍的各种 hack,但 none 似乎有效。 非常感谢您的帮助。
如果我理解正确的话,您是在尝试以一种间隔一次为 div 着色。您可以看一下 setTimeout,它显然可以达到 sleep 的目的。 setTimeout
在一定时间后执行函数。
你还需要看看closure
,因为setTimeout
是异步操作,但是循环不会因为setTimeout而停止执行
var onClick = function() {
for(var i = 0; i <= 9 ; i++ ){
(function(i){ // creating closure here
setTimeout(function(){
document.getElementById(i).setAttribute("class","blueSquare" );
},i*500) // 1st div will be colored after 500 msec,second div 1000msec, & so on
}(i))
}
};
$('#button').click(onClick);