JavaScript DOM 事件操作详解:从基础到实战
本文详细解析 JavaScript DOM 事件的核心机制,涵盖 ECMAScript、DOM 与 BOM 的组成。重点讲解事件三要素(事件源、事件、事件程序),并演示三种绑定方式:匿名函数、独立函数及行内绑定。通过代码实例说明如何获取节点、处理鼠标点击、颜色切换及 onload 事件,帮助开发者掌握前端交互开发基础。
JavaScript DOM 事件操作详解
本文通过具体实例,详细解析 JavaScript DOM 中常见的事件操作方式,旨在为读者提供清晰的参考与学习路径。
JavaScript 的组成
一、JavaScript 的组成
JavaScript 的基础架构主要包含以下三个部分:
- ECMAScript:这是 JavaScript 的语法标准,涵盖了变量、表达式、运算符、函数定义、条件判断(if语句)以及循环结构(for语句)等核心语法内容。
- DOM(文档对象模型):这是一套用于操作网页元素的 API 接口。通过 DOM,开发者可以实现如元素移动、样式变色、轮播图效果等交互功能。
- BOM(浏览器对象模型):这是一套用于操作浏览器部分功能的 API 接口,例如控制浏览器自动滚动等行为。
事件机制概述
二、事件机制
JavaScript 是一门以事件驱动为核心语言,其交互逻辑主要依赖于事件的触发与响应。
事件的三要素
事件的三要素
理解事件机制需要掌握三个关键要素:事件源、事件本身以及事件驱动程序。
具体总结如下:
- 事件源:指触发后续操作的 HTML 标签元素。
- 事件:指 JavaScript 预定义好的交互行为(具体列表见下文)。
- 事件驱动程序:指对样式和 HTML 结构进行操作的具体逻辑,即 DOM 操作部分。
事件代码书写步骤
代码书写步骤如下:(重要)
- (1)获取事件源:
document.getElementById("box"); //类似与ios语言的 UIButton *adBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - (2)绑定事件:
事件源box.事件onclick = function(){ 事件驱动程序 }; - (3)书写事件驱动程序:主要涉及 DOM 相关的操作逻辑。
举例:
获取事件源示例
<body>
<div id="box1">123</div>
<script type="text/javascript">
// 1、获取事件源
var div = document.getElementById("box1");
// 2、绑定事件
div.onclick = function () {
// 3、书写事件驱动程序
alert("我是弹出的内容");
}
</script>
</body>
//点击123将弹出要显示的内容
常用事件类型
常用事件类型包括以下几种:

DOM 节点获取方式
1、获取事件源的方式(DOM 节点的获取)
节点获取代码示例
var div1 = document.getElementById("box1"); //方式一:通过id获取单个标签
var arr1 = document.getElementsByTagName("div1"); //方式二:通过 标签名 获得 标签数组,所以有s
var arr2 = document.getElementsByClassName("hehe"); //方式三:通过 类名 获得 标签数组,所以有s
事件绑定方式
2、绑定事件的具体方式
方式一:直接绑定匿名函数。
匿名函数绑定示例
<div id="box1" >123</div>
<script type="text/javascript">
var div1 = document.getElementById("box1");
//绑定事件的第一种方式
div1.onclick = function () {
alert("我是弹出的内容");
}
</script>
方式二:先单独定义函数,再进行绑定。
独立函数绑定示例
<div id="box1" ></div>
<script type="text/javascript">
var div1 = document.getElementById("box1");
//绑定事件的第二种方式
div1.onclick = fn; //注意,这里是fn,不是fn()。fn()指的是返回值。
//单独定义函数
function fn() {
alert("我是弹出的内容");
}
</script>
注意上方代码中的注释细节。在绑定时,应书写 fn,而非 fn()。fn 代表整个函数对象,而 fn() 代表函数的执行返回值。
方式三:行内绑定方式。
行内绑定示例
<!--行内绑定-->
//注意第一行代码,绑定时,是写的"fn()",不是写的"fn"。因为绑定的这段代码不是写在js代码里的,而是被识别成了字符串。
<div id="box1" onclick="fn()"></div>
<script type="text/javascript">
function fn() {
alert("我是弹出的内容");
}
</script>
3、事件驱动程序编写
事件程序与样式操作示例
<style>
#box {
width: 100px;
height: 100px;
background-color: pink;
cursor: pointer;
}
</style>
</head>
<body>
<div id="box" ></div>
<script type="text/javascript">
var oDiv = document.getElementById("box");
//点击鼠标时,原本粉色的div变大了,背景变红了
oDiv.onclick = function () {
oDiv.style.width = "200px"; //属性值要写引号
oDiv.style.height = "200px";
oDiv.style.backgroundColor = "red"; //属性名是backgroundColor,不是background-Color
}
</script>
上方代码中需注意以下事项:
- 在 JavaScript 中设置属性值时,必须使用引号包裹字符串。
- 在 JavaScript 中设置属性名时,需使用驼峰命名法,例如 backgroundColor,而非 CSS 中的 background-Color。需注意所有类似 CSS 属性如 text-*、line-*、background-* 等在 JS 中均需转换为驼峰格式。
鼠标点击变化颜色示例:
鼠标点击变色逻辑示例
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.box{ /*class*/
width:100px;
height:100px;
background-color:green;
}
</style>
</head>
<body>
<div class="box" id="box">alex</div>
</body>
<script type="text/javascript">
var oDiv = document.getElementById('box');
var isGreen =true;
oDiv.onclick=function(){
console.log(oDiv.style);
if (isGreen){
oDiv.style.backgroundColor='red';
isGreen=false; //通过改变isGreen的值来控制鼠标点击的效果
}else{
oDiv.style.backgroundColor='green';
isGreen=true;
}
}
</script>
</html>
/*一个鼠标点击就是一个事件*/
onload 事件机制
当页面加载完成(包括文本和图片资源全部加载完毕)时,会触发 onload 事件。
onload 事件示例
<script type="text/javascript">
window.onload = function () {
console.log("完毕"); //等页面加载完毕时,打印字符串
}
</script>
效果展示:鼠标悬停发生交互,将鼠标置于图片 1 上方时,显示为图片 2。
图片悬停切换示例
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
//window.onload页面加载完毕以后再执行此代码
window.onload = function () {
//需求:鼠标放到img上,更换为另一张图片,也就是修改路径(src的值)。
//步骤:
//1.获取事件源
//2.绑定事件
//3.书写事件驱动程序
//1.获取事件源
var img = document.getElementById("box");
//2.绑定事件(悬停事件:鼠标进入到事件源中立即出发事件)
img.onmouseover = function () {
//3.书写事件驱动程序(修改src)
img.src = "2.jpg";
// this.src = "image/jd2.png";
};
}
</script>
</head>
<body>
<img id="box" src="1.jpg" style="cursor: pointer;border: 1px solid #ccc;"/>
</body>
</html>
感兴趣的朋友可以使用在线 HTML/CSS/JavaScript 代码运行工具:http://tools.jb51.net/code/HtmlJsRun 测试上述代码运行效果。
更多关于 JavaScript 相关内容感兴趣的读者可查看本站专题:《JavaScript 操作 DOM 技巧总结》、《JavaScript 页面元素操作技巧总结》、《JavaScript 事件相关操作与技巧大全》、《JavaScript 查找算法技巧总结》、《JavaScript 数据结构与算法技巧总结》、《JavaScript 遍历算法与技巧总结》及《JavaScript 错误与调试技巧总结》
希望本文所述内容对大家学习 JavaScript 程序设计有所帮助。
AOS.js 动画不触发怎么办?排查 DOM 加载与移动端兼容问题
2026-11-05 17:02:26
sigma.js 怎么实现节点点击、拖拽与悬停提示交互
2026-11-05 15:03:27
Matter.js 与 PixiJS/Three.js 集成:分离物理计算与渲染
2026-11-05 13:43:48
主流JS弹幕库选型指南:Danmaku.js等库的功能与体积对比
2026-11-05 09:28:19
JavaScript点击事件监听与交互效果实例
2026-11-05 09:10:19
