Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的javascript代码不自上而下进行编码?_Javascript_Jquery_Html_Css - Fatal编程技术网

为什么我的javascript代码不自上而下进行编码?

为什么我的javascript代码不自上而下进行编码?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,为什么我的javascript代码不自上而下进行编码 当按下“我的代码”时,在更改背景色和翻译3d之前,为什么仍发出警告 请参见我的代码,在调用函数之前,它应该更改backgroundColor和translate3dtest2\u fn 如何更改backgroundColor和translate3dbefirealert 点击 功能测试_fn(){ document.getElementById(“测试”).style.backgroundColor=“红色”; document.get

为什么我的javascript代码不自上而下进行编码

当按下“我的代码”时,在更改背景色和翻译3d之前,为什么仍发出警告

请参见我的代码,在调用函数之前,它应该更改
backgroundColor
translate3d
test2\u fn

如何更改
backgroundColor
translate3d
befire
alert


点击
功能测试_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>