为什么我的javascript代码不自上而下进行编码?
为什么我的javascript代码不自上而下进行编码 当按下“我的代码”时,在更改背景色和翻译3d之前,为什么仍发出警告 请参见我的代码,在调用函数之前,它应该更改为什么我的javascript代码不自上而下进行编码?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,为什么我的javascript代码不自上而下进行编码 当按下“我的代码”时,在更改背景色和翻译3d之前,为什么仍发出警告 请参见我的代码,在调用函数之前,它应该更改backgroundColor和translate3dtest2\u fn 如何更改backgroundColor和translate3dbefirealert 点击 功能测试_fn(){ document.getElementById(“测试”).style.backgroundColor=“红色”; document.get
backgroundColor
和translate3d
test2\u fn
如何更改backgroundColor
和translate3d
befirealert
点击
功能测试_fn(){
document.getElementById(“测试”).style.backgroundColor=“红色”;
document.getElementById(“test”).style.transform=“translate3d(500px,0px,0px)”;
test2_fn();
}
函数test2_fn(){
警报(“555”);
}
如评论中所述:
因为浏览器在当前JS完成执行之前不会重新绘制屏幕。因此,DOM中的元素样式已经更新,您只是还看不到而已 如果您确实想这样做,可以将另一个函数的执行推迟到事件循环中的下一个周期。您只需使用
setTimeout(test2\u fn,0)
也是一个很好的读物。因为它使用了一个堆栈,在渲染更改之前要清除。 为了清除堆栈,需要执行所有语句。 我添加了一个小的超时10ms,这样就可以发生变化
功能测试\u fn(回调){
document.getElementById(“测试”).style.backgroundColor=“红色”;
document.getElementById(“test”).style.transform=“translate3d(500px,0px,0px)”;
}
函数test2_fn(){
setTimeout(函数(){alert(“555”);},10);
}
点击
问题在于浏览器在调用警报之前没有重新绘制页面
以下可能会起到作用:
<div id="test" onclick="test_fn()">
CLICK
</div>
<script>
function test_fn(){
document.getElementById("test").style.backgroundColor = "red";
document.getElementById("test").style.transform = "translate3d(500px, 0px, 0px)";
setTimeout(test2_fn,20);
}
function test2_fn(){
alert("555");
}
</script>
点击
功能测试_fn(){
document.getElementById(“测试”).style.backgroundColor=“红色”;
document.getElementById(“test”).style.transform=“translate3d(500px,0px,0px)”;
设置超时(test2_fn,20);
}
函数test2_fn(){
警报(“555”);
}
因为浏览器在当前JS完成执行之前不会重新绘制屏幕。所以DOM中的元素样式已经更新了,你只是还没有看到而已。我该怎么办?为了解决这个问题。
<div id="test" onclick="test_fn()">
CLICK
</div>
<script>
function test_fn(){
document.getElementById("test").style.backgroundColor = "red";
document.getElementById("test").style.transform = "translate3d(500px, 0px, 0px)";
setTimeout(test2_fn,20);
}
function test2_fn(){
alert("555");
}
</script>