全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 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. 事件对象只在事件处理函数中有效

📝 发现内容有误?点击此处直接编辑

← 上一篇 事件委托
下一篇 → 事件监听
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库