控制台输出与js文件输出不一致 (event.currentTarget得到null)
代码:
const target = document.getElementById('target');
let e;
target.addEventListener('click', function (event) {
e = event;
console.log(e);
console.log(e.currentTarget);
});
控制台输出:
MouseEvent {isTrusted: true, screenX: 149, screenY: 253, clientX: 149, clientY: 131, …}
<div id="target"></div>
然而,在控制台输入:
console.log(e);
console.log(e.currentTarget);
得到的结果却是:
VM1656:1 MouseEvent {isTrusted: true, screenX: 149, screenY: 253, clientX: 149, clientY: 131, …}
VM1656:2 null
显然,event
对象是相同的,但是为什么控制台输出currentTarget
是null
?
从控制台查看event
对象中的currentTarget
,其值是null
,那为什么js文件中输出的currentTarget
不是null
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据 W3C 规范:
https://www.w3.org/TR/DOM-Lev...
currentTarget 在事件正在处理过程中使用。
你试试下面代码:
currentTarget
同样是null
,因为当读取currentTarget
属性时,事件处理已经结束了。你在控制台只输入了后面两句,这个明显主体都不对了,前面那个event是执行过程中捕获到的,后面的就不是一个东西啊。简单说就是上下文环境都不一样了。