当前位置:首页 > JavaScript

js实现事件监听实现

2026-01-31 19:42:22JavaScript

事件监听的基本概念

事件监听是指在特定事件发生时执行特定代码。JavaScript提供了多种方式来实现事件监听,包括HTML属性、DOM属性以及addEventListener方法。

通过HTML属性实现

在HTML元素中直接使用事件属性来绑定事件处理函数。例如,点击按钮时触发alert:

<button onclick="alert('按钮被点击了')">点击我</button>

通过DOM属性实现

通过JavaScript代码为DOM元素的事件属性赋值,实现事件监听。例如:

const button = document.querySelector('button');
button.onclick = function() {
    alert('按钮被点击了');
};

使用addEventListener方法

addEventListener是更灵活的事件监听方式,允许为同一事件添加多个监听器。语法如下:

js实现事件监听实现

element.addEventListener(event, function, useCapture);

其中:

  • event:事件类型(如'click''mouseover'
  • function:事件触发时执行的函数
  • useCapture:可选参数,指定事件是否在捕获阶段处理(默认为false,即冒泡阶段)

示例:

js实现事件监听实现

const button = document.querySelector('button');
button.addEventListener('click', function() {
    alert('第一个监听器');
});
button.addEventListener('click', function() {
    alert('第二个监听器');
});

事件对象

事件处理函数可以接收一个事件对象参数,包含事件相关信息。例如获取点击的坐标:

button.addEventListener('click', function(event) {
    console.log(`点击位置:X=${event.clientX}, Y=${event.clientY}`);
});

移除事件监听

使用removeEventListener移除已添加的事件监听器。注意需要传入相同的函数引用:

const handler = function() {
    alert('将被移除的监听器');
};
button.addEventListener('click', handler);
button.removeEventListener('click', handler);

事件委托

通过事件冒泡机制,在父元素上监听子元素的事件。适用于动态添加的元素或大量子元素:

document.querySelector('ul').addEventListener('click', function(event) {
    if (event.target.tagName === 'LI') {
        console.log('点击了列表项:', event.target.textContent);
    }
});

常见事件类型

  • 鼠标事件:clickdblclickmouseentermouseleave
  • 键盘事件:keydownkeyupkeypress
  • 表单事件:submitchangefocusblur
  • 窗口事件:loadresizescroll

注意事项

  • 使用addEventListener可以添加多个相同类型的事件监听器,而通过DOM属性方式会覆盖之前的事件
  • 事件委托可以减少事件监听器的数量,提高性能
  • 移除事件监听时需要确保函数引用一致,匿名函数无法移除

标签: 事件js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置…