87,907
社区成员
发帖
与我相关
我的任务
分享
<script type="text/javascript">
(document).ready(function() {
$("button").click(function() {
$("div").hide(2000,function() {
alert("Hello JavaScript");
});
});
});
</script>
上面代码的效果是以两秒的效果隐藏div后,再执行回调函数,弹出”Hello JavaScript“,那下面这段代码为什么不行?<script type="text/javascript">
(document).ready(function() {
$("button").click(function() {
$("div").hide(2000);
alert("Hello JavaScript");
});
});
</script>
JS不是单线程吗? $("div").hide(2000);和 alert("Hello JavaScript");不应是前者执行完了,后者再执行吗?为什么前者的动画效果还没执行完,就执行后面的代码,难道是JS碰到动画之类效果的时候是抛给别的线程执行的,它自身不执行渲染之类的效果,所以它就立即执行后面的代码。<script type="text/javascript">
function jisuan() {
var i;
for(i = 1; i<100000; i++)
{
var b = 1;
b += i;
document.write(b + "<br />");
}
alert("hahah");
}
jisuan();
alert("what");
</script>
最后的结果是先显示hahah,再显示what。应用在hide()上的话,不应该是hide的动画先显示完吗?再处理后面的语句吗?