全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-16 6 分钟 ✍️ juanwangdev

事件监听

事件监听让页面能够响应用户的各种操作,是交互的核心。

addEventListener

基本语法

JavaScript
element.addEventListener(event, handler, options);

基本用法

JavaScript
const btn = document.querySelector('button');

btn.addEventListener('click', function() {
  console.log('按钮被点击');
});

箭头函数写法

JavaScript
btn.addEventListener('click', () => {
  console.log('点击了');
});

事件对象

JavaScript
btn.addEventListener('click', (e) => {
  console.log(e.target);      // 触发事件的元素
  console.log(e.currentTarget); // 绑定事件的元素
});

第三个参数options

布尔值形式

JavaScript
// true: 捕获阶段触发
// false: 冒泡阶段触发(默认)
element.addEventListener('click', handler, true);

对象形式

JavaScript
element.addEventListener('click', handler, {
  capture: false,   // 是否捕获阶段
  once: true,       // 是否只触发一次
  passive: true     // 是否不调用preventDefault
});

removeEventListener

移除事件监听器:

JavaScript
function handler() {
  console.log('点击');
}

btn.addEventListener('click', handler);
btn.removeEventListener('click', handler);

注意:移除时必须传入相同的函数引用,匿名函数无法移除。

传统事件绑定

DOM属性方式

JavaScript
btn.onclick = function() {
  console.log('点击');
};

行内事件(不推荐)

HTML
<button onclick="handleClick()">点击</button>

两种方式对比

特性addEventListeneronclick属性
绑定多个支持覆盖
移除支持置null
捕获控制支持不支持
推荐度推荐不推荐

要点总结

  1. 推荐使用 addEventListener 绑定事件
  2. 需要移除时保存函数引用,匿名函数无法移除
  3. once: true 可实现只触发一次的效果
  4. passive: true 可提升滚动性能
  5. 避免使用行内事件和 onclick 属性

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

← 上一篇 事件对象
下一篇 → 常见事件类型
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

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

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