当前位置:首页 > JavaScript

js事件实现

2026-04-07 05:30:33JavaScript

事件监听与处理

在JavaScript中,事件处理是响应用户交互或系统触发的动作的核心机制。通过事件监听器,可以捕获特定事件并执行相应代码。

使用addEventListener方法绑定事件:

element.addEventListener('click', function(event) {
  console.log('元素被点击');
});

事件对象

事件触发时会自动传入事件对象(通常命名为evente),包含事件相关信息:

button.addEventListener('click', function(e) {
  console.log('坐标:', e.clientX, e.clientY);
  e.preventDefault(); // 阻止默认行为
});

事件委托

利用事件冒泡机制,在父元素上处理子元素事件:

js事件实现

document.getElementById('parent').addEventListener('click', function(e) {
  if(e.target.classList.contains('child')) {
    console.log('子元素被点击');
  }
});

常见事件类型

鼠标事件:

  • click 点击
  • dblclick 双击
  • mouseenter 鼠标进入
  • mouseleave 鼠标离开

键盘事件:

  • keydown 按键按下
  • keyup 按键释放

表单事件:

js事件实现

  • submit 表单提交
  • change 值改变
  • focus 获取焦点
  • blur 失去焦点

自定义事件

创建和触发自定义事件:

// 创建事件
const event = new Event('build');

// 监听事件
elem.addEventListener('build', function(e) { /*...*/ });

// 触发事件
elem.dispatchEvent(event);

事件移除

使用removeEventListener移除事件监听:

function handleClick() {
  console.log('只会执行一次');
  button.removeEventListener('click', handleClick);
}

button.addEventListener('click', handleClick);

事件传播控制

控制事件传播阶段:

// 捕获阶段
element.addEventListener('click', handler, true);

// 冒泡阶段(默认)
element.addEventListener('click', handler, false);

// 停止传播
function handler(e) {
  e.stopPropagation();
}

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

相关文章

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…