addEventListener 为什么事件默认就执行了?
以下代码,给class="inner"元素添加点击事件,但是打开浏览器事件就被执行了,并且传入的事件对象是undefined
<body>
<div class="outer">
o
<div class="inner">i</div>
</div>
<script type="text/javascript" src='./util/util.js'></script>
<script type="text/javascript">
var dOuter=document.querySelector('.outer');
var dInner=document.querySelector('.inner');
dInner.addEventListener('click',conInfo(event),false);
dOuter.addEventListener('click',conInfo(event),false);
function conInfo(event){
console.log('event...');
console.log(event);
}
</script>
</body>
打开浏览器 事件就执行了,并且传入的event=undefined
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
去掉里面的参数,不能这么写。
conInfo 是一个函数, 你在它后面加上 (event), 相当于执行了
函数,而event是未定义的参数,所以会显示函数已执行,并打印出
undefined.
dInner.addEventListener('click',conInfo(event),false);
写成
dInner.addEventListener('click',conInfo);
你这样写不直接运行才怪。带括号函数就直接运行了,而事件需要的是回调函数,点击才执行。而且我有点奇怪你为什么要把回调分出来写呢?
conInfo 写成回调函数就行了 比如