为了账号安全,请及时绑定邮箱和手机立即绑定

chrome js写在css控制后面却先执行了 火狐的是先css,再执行了alert

chrome js写在css控制后面却先执行了 火狐的是先css,再执行了alert

Smart猫小萌 2019-03-20 17:13:49
代码的意思应该是 先变成红色,再弹1。但是现在反过来了。。。<style>    #box{        width: 100px;        height: 100px;        background-color: #7FFFD4;    }</style><body>    <div id="box"></div>    <button>123123</button>    </body><script>    $("button").click(function() {        $("#box").css("background-color", "red");        alert(1)    })</script>
查看完整描述

2 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

执行顺序其实没错,只是 alert() 会阻塞页面更新。


$("#box").css("background-color", "red") // 这行先执行了

alert(1) // 弹出框,页面不更新了,此时 css 其实已经改了,但是页面没有更新所以你看不到变成红色

补充

解决方法很简单,用 setTimeout 就行了


$("#box").css("background-color", "red")

setTimeout(() => {

  alert(1)

}, 0)


查看完整回答
反对 回复 2019-03-22
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

firefox,IE 11 上没问题,opera 和 chrome 有问题


查看完整回答
反对 回复 2019-03-22
  • 2 回答
  • 0 关注
  • 982 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号