JavaScript事件是浏览器在特定条件满足时发出的通知信号,本身不执行逻辑,需通过addEventListener绑定处理函数;事件对象含target、currentTarget等关键属性,需注意移动端和可访问性适配。

JavaScript 事件到底是什么
JavaScript 事件不是“某个函数”,也不是“一段代码”,而是浏览器在特定条件满足时自动发出的**通知信号**。比如用户按下鼠标左键、键盘按键、页面加载完成、网络请求返回,都会触发对应事件。它本身不执行任何逻辑,只是告诉 JS:“这事发生了”。真正干活的是你写的事件处理函数。
用 addEventListener 响应点击最稳妥
直接写 onclick 属性(比如 )看似简单,但会覆盖已有监听器、难以移除、不利于模块化。现代标准做法是用 addEventListener:
const btn = document.getElementById('my-btn');
btn.addEventListener('click', function(event) {
console.log('被点了', event.target);
});
-
'click'是事件类型,区分大小写,不能写成'Click'或'CLICK' - 第二个参数必须是函数,可以是匿名函数、命名函数,也可以是箭头函数(但注意
this指向变化) - 同一个元素可以多次调用
addEventListener('click', ...),所有回调都会执行 - 想移除监听?得保存函数引用:
btn.removeEventListener('click', handler),不能传匿名函数
点击事件对象 event 里藏着关键信息
回调函数接收的 event 参数不是摆设。常见实用字段有:
-
event.target:真正被点击的 DOM 元素(可能是子元素,比如按钮里的图标) -
event.currentTarget:绑定监听器的那个元素(比如你绑在上,它就是这个)event.preventDefault():阻止默认行为(如点击链接跳转、表单提交)event.stopPropagation():阻止事件冒泡,避免父级监听器也被触发误用
event.target和event.currentTarget是新手高频坑——尤其在事件委托场景下,不加判断就直接操作event.target,结果点到空白区域或文字就报错。立即学习“Java免费学习笔记(深入)”;
别忽略移动端和可访问性差异
只监听
click在手机上可能响应迟钝(300ms 延迟),且对屏幕阅读器不友好。真实项目中要考虑:- 用
'pointerdown'替代'click'可获得更即时的触控反馈 - 确保可点击元素有
role="button"和tabindex="0",否则键盘用户按Enter或Space触发不了 - 同时监听
click和keydown(判断是否为Enter/Space)才能兼顾鼠标和键盘用户
很多人写完
click就以为完了,结果测试时发现盲人用户无法操作,或者 iOS Safari 点击无反应——问题往往出在没补全交互通道。











