JavaScript事件监听详解|从点击修改文字到随机背景色(新手实战教程)

网页之所以能实现人机交互(点击、悬浮、输入、跳转),核心全靠JS 事件监听。

静态的 HTML + CSS 只能做展示,加入事件监听后,网页才能「听懂用户操作」并执行对应逻辑。

本文结合两段超实用实战代码:点击修改文本、点击随机切换背景色,从零带你吃透 addEventListener 事件监听,新手看完直接上手写交互效果。


一、什么是 JS 事件监听?

  1. 核心概念
    事件监听:监视用户的行为,当指定行为触发时,执行对应的代码。
    常见用户行为(事件):点击、鼠标移入、鼠标移出、键盘按下、窗口加载、输入内容等。
  2. 事件三要素(必记)
  • 事件源:谁要被监听?(按钮、div、输入框等DOM元素)
  • 事件类型:监听什么行为?(click 点击、mouseover 悬浮等)
  • 事件处理函数:触发后做什么?(改文字、变色、弹窗、跳转)
  1. 为什么推荐 addEventListener?
    JS 绑定事件有三种方式,现代开发只推荐 addEventListener:
  • 支持给同一个元素绑定多个事件,不会覆盖
  • 语法规范、兼容性好、可移除事件
  • 分离结构与行为,代码更整洁易维护

二、实战案例一:点击元素修改文字内容

需求:页面存在一个盒子,点击盒子后,盒子文字变为 Hello world。

  1. 完整可运行代码

事件监听-修改文字
点击我试试

复制代码
<script>
    // 1. 获取事件源:id为chele的盒子
    let pata = document.querySelector('#chele');

    // 2. 绑定点击事件监听
    pata.addEventListener("click", function(){
        // 3. 触发后的逻辑:修改当前元素内部文字
        this.innerHTML = "Hello world";
    })
</script>
  1. 代码逐行解析 1. document.querySelector('#chele'):通过 id 获取 DOM 元素,即我们要监听的盒子(事件源) 2. addEventListener("click", function(){}):绑定点击事件,监听用户点击操作 3. this:指向当前触发事件的元素(也就是 #chele 盒子) 4. innerHTML:修改元素内部的文本/HTML内容 3. 核心亮点 this 关键字妙用:不用重复获取元素,直接指代触发对象,代码更简洁。

三、实战案例二:点击按钮随机切换网页背景色

需求:点击按钮,自动生成随机 RGB 颜色,修改网页整体背景色。

本案例用到:事件监听 + 随机数封装函数,是前端高频交互效果。

  1. 完整可运行代码

事件监听-随机换背景色 点击切换背景色

复制代码
<script>
    // 获取按钮元素
    let srr = document.querySelector("button");
    
    // 绑定点击事件监听
    srr.addEventListener("click", bgChange);

    // 背景色切换函数
    function bgChange(){
        // 拼接随机RGB颜色
        let color = "rgb(" + random(255) + "," + random(255) + "," + random(255)+")"
        // 修改body背景色
        document.body.style.backgroundColor = color
    }

    // 生成0~最大值的随机整数
    function random(number){
        return Math.floor(Math.random()*(number+1))
    }
</script>
  1. 核心逻辑拆解 (1)随机数函数封装 Math.random():生成 0~1 之间的随机小数 Math.floor():向下取整,保证得到整数 最终生成 0~255 的整数,完美适配 RGB 颜色取值范围 (2)RGB颜色拼接 RGB 颜色规则:rgb(红,绿,蓝),三个数值均为 0-255,通过随机函数生成三原色数值,实现完全随机配色。 (3)样式修改 document.body.style.backgroundColor:修改页面主体背景样式,实现视觉变色效果。 3. 分离函数写法优势 - 将随机数生成、变色逻辑拆分,代码模块化 - 函数可复用,后续其他场景需要随机数可直接调用 - 比匿名函数更易阅读、易调试

四、两种事件写法对比(重点)

  1. 匿名函数写法(适合单次简单逻辑)
    对应案例一:修改文字
    pata.addEventListener("click", function(){
    this.innerHTML = "Hello world";
    })
    优点:代码紧凑、无需单独定义函数
    缺点:无法复用、适合简单短逻辑
  2. 具名函数写法(适合复杂、可复用逻辑)
    对应案例二:随机变色
    srr.addEventListener("click", bgChange);
    优点:逻辑清晰、函数可复用、方便移除事件
    缺点:需要单独定义函数

五、新手常见易错点总结

  • 获取元素时机错误:JS 代码必须写在 DOM 元素后面,否则获取不到元素,监听失效
  • 事件名不带on:addEventListener 中事件为 click,不是 onclick
  • 忘记随机数取整:不使用 Math.floor 会出现小数,颜色失效
  • this 使用混乱:箭头函数中 this 不指向 DOM 元素,简单点击事件优先用普通函数

六、拓展:常用高频事件清单

掌握 click 点击事件后,这些事件可以直接套用相同写法:

  • mouseover:鼠标移入
  • mouseout:鼠标移出
  • input:输入框输入事件
  • keydown:键盘按下
  • resize:窗口大小改变

写在最后

事件监听是 JS 交互的基石,所有网页特效、表单交互、弹窗切换、点击功能,底层全部依靠 addEventListener 实现。

本篇两个案例覆盖了简单文本修改和动态样式修改两大核心场景,新手熟练掌握后,可以自主拓展出点击变色、点击切换内容、鼠标悬浮特效等各类常用网页效果。

相关推荐
像我这样帅的人丶你还1 小时前
MCP + npm:给五年前的老系统接上AI
前端·javascript·agent
愚公移码1 小时前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
十月的皮皮1 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库
Echo缘2 小时前
嵌入式系统C语言资源分类与内存分布分析
c语言·开发语言
JaneConan2 小时前
鸿蒙 ArkUI 深水区:@Watch 和 @Observed,状态变了「自动跑」+ 嵌套对象「深层重绘」
开发语言·后端·ui·harmonyos
猫头_2 小时前
AI 流式传输工程指南:有了 EventSource 为何还要 Fetch?
javascript·http·llm
赤水无泪2 小时前
qt中图标、名称的设置方式
开发语言·qt
王莎莎-MinerU3 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
橘子海全栈攻城狮3 小时前
【最新源码】基于SpringBoot + Vue的超市管理系统的设计与实现D002
java·开发语言·vue.js·spring boot·后端·spring
在水一缸3 小时前
深入浅出 Catch2:现代 C++ 测试框架的优雅实践
开发语言·c++·单元测试·log4j·测试框架·catch2