JavaScript 超详细整理(下篇)
本文承接上篇基础语法内容,完整讲解 DOM 文档对象模型、表格隔行变色实战、事件监听全套语法、各类常用鼠标 / 键盘 / 表单事件、JS 模块化开发,配套完整代码案例,适合巩固网页交互开发、期末复习、前端入门面试。
一、DOM 文档对象模型
1.1 DOM 基础概念
DOM 全称 Document Object Model(文档对象模型),浏览器会自动将整个 HTML 页面解析为一棵树形对象树,页面中 html、head、body、标签、文本、注释全部封装成对应对象,JS 可以通过 DOM 读取、修改页面内容、样式、增删元素。DOM 树层级结构:顶级 document 对象 → 根标签<html>→<head>、<body>→ 内部各类元素、文本节点。DOM 可实现四大操作:
- 修改 HTML 文字内容;
- 修改标签 CSS 样式;
- 监听页面交互事件;
- 动态新增、删除页面元素。
1.2 获取 DOM 元素两套核心 API
| 方法 | 作用 | 适用场景 |
|---|---|---|
| document.querySelector ("选择器") | 获取匹配的第一个元素 | 只需要单个标签(按钮、单行) |
| document.querySelectorAll ("选择器") | 获取全部匹配元素,返回伪数组 NodeList | 批量获取表格行、多个同类标签 |
补充老式方法(了解即可,不推荐):getElementById、getElementsByTagName。代码示例:
// 根据id获取按钮 let btn = document.querySelector("#btn"); // 获取页面所有表格tr行 let trArr = document.querySelectorAll("tr");伪数组说明:拥有 length 长度、数字下标,但是不能直接使用数组 push、sort 等方法。
1.3 DOM 通用操作步骤
- 通过选择器获取目标 DOM 元素对象;
- 操作对象属性(文本、style 样式、元素属性)。
1.4 实战案例:表格静态隔行换色
需求:员工表格奇数行背景#f2e2e2,偶数行#e6f7ff实现思路:
- 获取所有 tr 行伪数组;
- 循环遍历,判断下标奇偶;
- 给对应行 style.backgroundColor 赋值。
1.5 小节小结
DOM 是 JS 操作页面唯一标准,querySelector/querySelectorAll兼容 id、class、标签所有 CSS 选择器,是开发首选。
二、事件监听完整体系
2.1 事件基础定义
事件是页面发生的各类动作:鼠标点击、移入移出、键盘按下、输入框输入、表单提交;事件监听(事件绑定):提前给元素绑定动作,触发时自动执行自定义 JS 代码。事件三大核心要素:
- 事件源:触发动作的 DOM 元素(按钮、表格行、输入框);
- 事件类型:click、mouseenter、keydown 等;
- 处理函数:事件触发后执行的业务代码。
2.2 两种事件绑定方式对比
方式 1:on 老式绑定(不推荐)
特点:同一个元素同一事件只能绑定一个函数,后写代码会覆盖前面逻辑
let btn = document.querySelector("#btn"); btn.onclick = function(){ alert("按钮点击"); }方式 2:addEventListener(官方推荐)
特点:同一元素可绑定多个相同事件,互不覆盖,支持更多高级事件特性
btn.addEventListener("click", ()=>{ alert("点击触发"); })2.3 四大类高频事件大全
1)鼠标事件
- click:鼠标单击
- mouseenter:鼠标移入元素
- mouseleave:鼠标移出元素
2)键盘事件
- keydown:按键按下瞬间
- keyup:按键抬起
3)焦点事件(输入框专用)
- focus:输入框获得光标
- blur:输入框失去光标
4)表单事件
- input:输入框内容发生变化实时触发
- submit:表单提交时触发
2.4 实战案例:表格鼠标悬浮变色
需求:鼠标移动到表格行时背景 #f2e2e2,离开恢复白色;实现逻辑:
- 获取全部 tr;
- 循环遍历每一行;
- 分别绑定 mouseenter、mouseleave 事件,修改背景色。
2.5 小节小结
开发统一使用 addEventListener 绑定事件,鼠标、键盘、焦点、表单事件覆盖绝大多数页面交互场景。
三、JS 模块化开发
3.1 模块化作用
项目代码量庞大后,拆分通用工具函数、业务逻辑到多个独立 JS 文件,降低代码耦合,方便复用、维护、团队协作。
3.2 两个核心关键字
export:导出变量、函数,供其他 JS 文件引入使用;import:导入其他模块导出的函数、变量。
3. 3 使用规范
引入模块化 JS 文件时,script 标签必须添加type="module"属性:
<script src="js/utils.js" type="module"></script>工具文件 utils.js 示例:
// 导出打印工具函数 export function printLog(msg){ console.log(msg); }业务 js 引入使用:
import { printLog } from "./utils.js"; print("鼠标移入事件触发");3.4 小节小结
模块化分离工具与业务代码,避免单文件代码臃肿,大型前端项目必备开发规范。
四、下篇全文总结
- DOM:浏览器将页面转为树形对象,
querySelector获取单个元素,querySelectorAll批量获取返回伪数组; - DOM 实战:表格静态隔行变色,通过循环下标控制奇偶行背景;
- 事件三要素:事件源、事件类型、处理函数;
- 两种绑定方式:on 会覆盖,addEventListener 推荐使用;
- 常用事件:鼠标、键盘、焦点、表单四类,覆盖页面全部交互;
- 鼠标悬浮表格案例:给每行绑定移入、移出事件动态切换背景;
- 模块化:export 导出、import 导入,script 加 type="module" 开启模块模式。
下篇拓展练习
- 独立完成员工表格静态隔行换色、鼠标悬浮变色两套案例;
- 给登录输入框绑定 focus、blur、input 键盘事件,做简单输入长度校验;
- 封装打印日志工具函数抽为独立模块,页面引入调用。
下篇入门面试高频考点
- querySelector 与 querySelectorAll 区别、返回值类型;
- on 绑定和 addEventListener 优缺点;
- 鼠标移入 mouseenter、移出 mouseleave 使用场景;
- JS 模块化 export、import 使用规则;
- DOM 操作标准实现流程。