← JavaScript Set 对象 没有下一篇了 →

JavaScript 事件处理

原创 2026-03-23 JavaScript 已有人查阅

JavaScript 事件处理:让页面与用户产生交互

在网页开发中,用户与页面的每一次互动——点击按钮、移动鼠标、敲击键盘、滚动页面——都会产生一个信号,这个信号就是“事件”。事件是浏览器用来通知 JavaScript 代码“有事情发生了”的机制。

我刚开始学前端的时候,总觉得事件处理很神秘。后来慢慢理解了,它其实就像是给页面上的元素装上了“耳朵”,时刻在听用户的操作,一旦监听到特定动作,就执行相应的代码。这个过程,就叫事件处理

什么是事件与事件处理?

简单来说,事件就是状态的变化。在 HTML 页面里,用户点击了一个按钮,或者浏览器完成页面加载,都属于事件。JavaScript 代码可以“监听”这些事件,并在事件发生时执行预设的逻辑。这种“监听-响应”的机制,就是事件处理

事件处理的核心是事件处理器(也叫事件处理函数)。我们可以通过几种方式把事件处理器绑定到元素上:

  • 直接在 HTML 标签内使用 on 开头的属性(如 onclick

  • 在 <script> 标签内通过 DOM 属性赋值

  • 使用 addEventListener 方法(更灵活,推荐方式)

常用事件类型与处理器

HTML 事件有很多种,下面按类别整理一下常用的。这些事件处理器名称都以 on 开头,后面跟着事件名。

鼠标事件
事件 事件处理器 触发时机
click onclick 鼠标单击元素
mouseover onmouseover 鼠标指针移动到元素上
mouseout onmouseout 鼠标指针离开元素
mousedown onmousedown 鼠标按键被按下(在元素上)
mouseup onmouseup 鼠标按键被释放(在元素上)
mousemove onmousemove 鼠标在元素上移动
键盘事件
事件 事件处理器 触发时机
keydown onkeydown 键盘按键被按下
keyup onkeyup 键盘按键被释放
表单事件
事件 事件处理器 触发时机
focus onfocus 元素获得焦点(如输入框被点击)
blur onblur 元素失去焦点
change onchange 表单元素的值发生变化
submit onsubmit 表单被提交
窗口/文档事件
事件 事件处理器 触发时机
load onload 页面加载完成(包括图片、样式等)
resize onresize 浏览器窗口大小被调整
scroll onscroll 页面或元素被滚动

事件处理示例

下面我们通过几个具体的例子,看看事件处理器在代码中怎么用。这些示例都用到了“代码号”学习环境的写法。

1. 点击事件(click)

这个是最常见的事件。用户点击按钮时,触发一个函数,在页面上显示信息。

<!-- 代码号学习笔记:click 事件示例 -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>click事件示例</title>
</head>
<body>
    <h3>点击下面的按钮试试</h3>
    <button onclick="showMessage()">点我一下</button>
    <p id="demo"></p>

    <script>
        function showMessage() {
            document.getElementById("demo").innerHTML = "2026年3月23日 你点击了按钮";
        }
    </script>
</body>
</html>

说明:这里在 <button> 标签里直接用 onclick 属性指定了事件处理函数 showMessage()。当用户点击按钮时,函数被执行,把一段文字写入到 <p> 标签里。

2. 鼠标悬停事件(mouseover / mouseout)

鼠标移到元素上和离开元素时,分别触发不同的效果。我常用这个来做提示效果或改变样式。

<!-- 代码号学习笔记:mouseover 和 mouseout 事件 -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鼠标悬停事件示例</title>
    <style>
        .box {
            width: 200px;
            height: 100px;
            background-color: #e0e0e0;
            text-align: center;
            line-height: 100px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <h3>把鼠标移到灰域上看看效果</h3>
    <div class="box" onmouseover="changeColor('lightblue')" onmouseout="changeColor('#e0e0e0')">
        鼠标移到这里
    </div>

    <script>
        function changeColor(color) {
            // 通过事件目标元素改变样式,这里用 this 指向当前元素
            // 但为了代码清晰,我们通过选择器来操作
            document.querySelector('.box').style.backgroundColor = color;
        }
    </script>
</body>
</html>

说明onmouseover 在鼠标进入区域时触发,把背景变成浅蓝色;onmouseout 在鼠标离开时触发,把背景恢复原色。这种即时反馈的交互,能显著提升用户体验。

3. 焦点事件(focus / blur)

表单输入框常会用到焦点事件。比如用户点击输入框时改变边框颜色,离开时再变回来。

<!-- 代码号学习笔记:focus 和 blur 事件 -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>焦点事件示例</title>
    <style>
        input {
            padding: 8px;
            margin: 10px;
            border: 2px solid #ccc;
        }
        .highlight {
            border-color: #ff6b6b;
            background-color: #fff5f5;
        }
    </style>
</head>
<body>
    <h3>点击输入框,看看边框和背景的变化</h3>
    <input type="text" id="username" placeholder="请输入用户名"
           onfocus="handleFocus(this)"
           onblur="handleBlur(this)">

    <script>
        function handleFocus(element) {
            element.classList.add('highlight');
        }
        function handleBlur(element) {
            element.classList.remove('highlight');
        }
    </script>
</body>
</html>

说明onfocus 在输入框获得焦点时触发,添加一个高亮类;onblur 在失去焦点时触发,移除这个类。这种处理方式可以让用户清楚地知道当前正在操作哪个输入框。

4. 键盘事件(keydown / keyup)

捕获键盘按键动作,常用于搜索框的实时响应或快捷键功能。

<!-- 代码号学习笔记:keydown 事件示例 -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>键盘事件示例</title>
</head>
<body>
    <h3>在输入框里按任意键,会弹出提示</h3>
    <input type="text" id="searchBox" placeholder="在这里打字试试"
           onkeydown="showKeyAlert()">

    <script>
        function showKeyAlert() {
            alert('你按下了键盘上的某个键');
        }
    </script>
</body>
</html>

说明onkeydown 在用户按下键盘按键的瞬间就会触发。在项目中,我们通常用 event 对象来获取更详细的信息,比如按的是哪个键。

5. 页面加载事件(load)

有时候我们需要确保页面上的所有元素(包括图片)都加载完成后,再执行某些操作。这时候 load 事件就派上用场了。

<!-- 代码号学习笔记:load 事件示例 -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>load事件示例</title>
</head>
<body onload="pageLoaded()">
    <h3>页面加载完成后会显示一条消息</h3>
    <p id="status">加载中...</p>

    <script>
        function pageLoaded() {
            document.getElementById("status").innerHTML = "页面已加载,时间是2026年3月23日";
        }
    </script>
</body>
</html>

说明onload 放在 <body> 标签上,意味着整个页面(包括所有图片、样式、脚本)都加载完毕后才执行 pageLoaded() 函数。这是一个很有用的时机控制点。

个人经验:事件绑定的几种方式

在开发中,我慢慢发现,把事件处理器直接写在 HTML 标签里(比如 onclick="func()")虽然简单直接,但对于稍复杂的项目来说,这种方式会造成 HTML 和 JavaScript 耦合过紧,不利于维护。

现在我更倾向于在 JavaScript 代码中使用 addEventListener 来做事件绑定。它有几个明显的好处:

  • 可以给同一个元素绑定多个不同的事件处理器

  • 可以控制事件冒泡和捕获的阶段

  • 便于在代码中动态添加或移除事件监听

对于简单的小页面,或者快速写测试代码的时候,直接用 HTML 属性也足够。关键是要根据项目的复杂度来选择合适的写法。

本节课程知识要点

  1. 事件的三要素:事件源(谁触发了事件)、事件类型(发生了什么动作)、事件处理器(做什么响应)。理解这三点,就抓住了事件处理的核心。

  2. on 前缀的事件属性:在 HTML 标签内直接使用 onclickonmouseover 等属性是绑定事件处理器的方式,适合简单场景。

  3. 键盘事件与 event 对象keydown 和 keyup 事件配合 event 对象,可以获取用户按下的具体按键(如 event.key 或 event.keyCode),实现更精细的控制。

  4. 加载事件的时机load 事件在页面所有资源加载完成后触发;如果需要更早执行(比如 DOM 结构加载完即可),可以使用 DOMContentLoaded 事件,两者触发时机不同。

  5. 事件处理器的复用性:一个函数可以被多个事件或多个元素复用,这能提高代码的可维护性和内存使用效率。

← JavaScript Set 对象 没有下一篇了 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号