当前位置:首页 > JavaScript

js event实现

2026-03-14 09:36:58JavaScript

Event 基本概念

JavaScript 中的事件是用户或浏览器与页面交互时触发的动作(如点击、滚动、键盘输入)。通过事件监听和处理器,可以实现交互逻辑。

事件监听方法

1. HTML 属性直接绑定
在 HTML 元素中通过 on[event] 属性直接绑定事件:

<button onclick="alert('Clicked!')">点击</button>

2. DOM 属性绑定
通过 JavaScript 为 DOM 元素的 on[event] 属性赋值:

const button = document.querySelector('button');
button.onclick = function() {
  console.log('Button clicked');
};

3. addEventListener
推荐方式,支持多个监听器且更灵活:

js event实现

button.addEventListener('click', function(event) {
  console.log('Event triggered:', event.type);
});

事件对象

事件处理器接收 Event 对象参数,包含事件相关信息:

element.addEventListener('click', function(event) {
  console.log('ClientX:', event.clientX); // 鼠标点击的 X 坐标
  console.log('Target:', event.target);   // 触发事件的元素
});

事件传播机制

事件分三个阶段:

  • 捕获阶段:从 window 向下传播到目标元素。
  • 目标阶段:到达目标元素。
  • 冒泡阶段:从目标元素向上冒泡到 window

通过 addEventListener 的第三个参数控制监听阶段(默认冒泡阶段):

js event实现

// 捕获阶段监听
parent.addEventListener('click', () => console.log('Capture'), true);

// 冒泡阶段监听
child.addEventListener('click', () => console.log('Bubble'));

阻止默认行为

调用 event.preventDefault() 阻止默认行为(如链接跳转):

link.addEventListener('click', (event) => {
  event.preventDefault();
  console.log('Link click prevented');
});

阻止事件传播

  • event.stopPropagation():阻止事件继续传播(冒泡或捕获)。
  • event.stopImmediatePropagation():阻止当前元素的其他监听器执行。
child.addEventListener('click', (event) => {
  event.stopPropagation();
  console.log('Child click, propagation stopped');
});

事件委托

利用冒泡机制在父元素上监听子元素事件,适合动态内容:

document.querySelector('ul').addEventListener('click', (event) => {
  if (event.target.tagName === 'LI') {
    console.log('List item clicked:', event.target.textContent);
  }
});

自定义事件

通过 CustomEvent 创建和触发自定义事件:

const event = new CustomEvent('customEvent', { detail: { data: 'Example' } });
element.dispatchEvent(event);

element.addEventListener('customEvent', (e) => {
  console.log('Custom event data:', e.detail.data);
});

常用事件类型

  • 鼠标事件click, dblclick, mouseover, mouseout
  • 键盘事件keydown, keyup
  • 表单事件submit, change, focus
  • 窗口事件load, resize, scroll

示例代码

// 动态添加按钮事件
document.querySelectorAll('.btn').forEach(btn => {
  btn.addEventListener('mouseenter', () => {
    btn.style.backgroundColor = 'yellow';
  });
  btn.addEventListener('mouseleave', () => {
    btn.style.backgroundColor = '';
  });
});

通过结合事件监听、传播控制和委托机制,可以高效实现复杂的交互逻辑。

标签: jsevent
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…