为什么alert语句总是优先于上一条语句执行?

代码如下:

right_out.onclick = function(){
   var lis = ul.getElementsByTagName('li');
   var temp = lis[lis.length-1].innerHTML;
   ul.removeChild(lis[lis.length-1]);
   alert(temp);
}

removeChild这行明明是在上面,为什么是alert语句优先执行?
然后我尝试给alert语句添加setTimeOut定时器,结果还是一样.

var lis = ul.getElementsByTagName('li');
var temp = lis[0].innerHTML;
ul.removeChild(lis[0]);
setTimeout(function(){
    alert(temp)
},1000);
阅读 3.7k
2 个回答

alert会阻塞所有线程,其中就包括GUI渲染线程,所以removeChild已经执行了,只是没有表现出来而已。

setTimeout(function(){
    alert(temp)
},1000);

亲测加了setTimeout以后是alert后弹框

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题