onmouseout事件在打开elements和打开console时显示的执行结果为什么不一致?

新手上路,请多包涵

操作疑问

事件在打开elements和打开console时的执行结果不一致的原因

过程描述

给div节点分别通过2种方法添加了2个事件(onmouseover/onmouseout)
移入时背景放大1.2倍,移出时恢复1.0倍且输出节点和X坐标

<body>
    <div id="box" onmouseout="fExpand(this)" class='box'></div>
</body>
<script>
    // 写在html节点上
    function fExpand(t) {
        console.log(t, event.clientX);
        box.style.transform = 'scale(1)';
    }
   // DOM 0级事件处理程序
    box.onmouseover = function () {
        box.style.transform = 'scale(1.2)';
    }
</script>

显示结果

当点开elements页 操作移出动作时,节点显示scale(1)
当点开console页 操作移出动作时,节点显示scale(1.2)
开发者工具页element/console下事件执行的显示结果

尝试调整

  1. 调换移出事件的函数体内容位置(先恢复scale(1),再输出节点),结果还是不一致
  2. 调换事件书写顺序,先移入后移出,结果依旧不变
  3. 如果不打开开发者工具,输出节点显示scale(1)

请问是什么原因或者哪里出错导致的?这种执行结果应该怎么理解?

阅读 1.3k
1 个回答

因为 chrome 的控制台打印的对象是半实时的,切换到 Elements 页打印的内容,会在切换到 Console 页才获取,甚至,关闭控制台重新打开,之前打印的内容也会更新为最新内容

可以改为打印字符串,因为字符串是不可变的,或者打印元素的副本

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