全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-16 7 分钟 ✍️ juanwangdev

事件对象

事件对象在事件触发时自动传入处理函数,包含事件的全部信息。

获取事件对象

JavaScript
element.addEventListener('click', function(e) {
  console.log(e);  // 事件对象
});

常用属性

元素相关

属性说明
target触发事件的元素(实际点击的)
currentTarget绑定事件的元素
srcElementtarget的别名(IE)
JavaScript
document.querySelector('ul').addEventListener('click', (e) => {
  console.log(e.target);         // 点击的li
  console.log(e.currentTarget);  // ul
});

鼠标事件属性

属性说明
clientX / clientY相对于视口的坐标
pageX / pageY相对于文档的坐标
offsetX / offsetY相对于目标元素的坐标
screenX / screenY相对于屏幕的坐标
button按下的鼠标按键(0左/1中/2右)
JavaScript
element.addEventListener('click', (e) => {
  console.log(e.clientX, e.clientY);  // 鼠标位置
});

键盘事件属性

属性说明
key按键值('a', 'Enter', 'Shift')
code物理按键码('KeyA', 'Enter', 'ShiftLeft')
keyCode按键ASCII码(已废弃)
ctrlKey / shiftKey / altKey是否按下修饰键
JavaScript
document.addEventListener('keydown', (e) => {
  if (e.key === 'Enter') {
    console.log('回车键');
  }
  if (e.ctrlKey && e.key === 's') {
    e.preventDefault();  // 阻止浏览器保存
  }
});

通用属性

属性说明
type事件类型
timeStamp事件触发时间戳
bubbles是否冒泡
cancelable是否可取消默认行为

常用方法

preventDefault

阻止默认行为:

JavaScript
form.addEventListener('submit', (e) => {
  e.preventDefault();  // 阻止表单提交
});

link.addEventListener('click', (e) => {
  e.preventDefault();  // 阻止链接跳转
});

stopPropagation

阻止事件冒泡:

JavaScript
child.addEventListener('click', (e) => {
  e.stopPropagation();  // 阻止事件向上冒泡
});

stopImmediatePropagation

阻止后续所有监听器:

JavaScript
btn.addEventListener('click', (e) => {
  e.stopImmediatePropagation();
});
btn.addEventListener('click', () => {
  // 不会被触发
});

注意:preventDefault 阻止默认行为,stopPropagation 阻止冒泡,两者作用不同。

要点总结

  1. target 是实际触发元素,currentTarget 是绑定元素
  2. 鼠标坐标根据需求选择 client/page/offset 系列
  3. 键盘事件用 keycodekeyCode 已废弃
  4. preventDefault 阻止默认行为,stopPropagation 阻止冒泡
  5. 事件对象只在事件处理函数中有效
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 事件委托
下一篇 → 事件监听
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码