文档对象模型(Document Object Model)是浏览器将HTML文档转换为树形结构的编程接口。每个HTML标签对应一个节点对象,开发者可以通过JavaScript操作这些节点实现页面动态更新。DOM操作包含三个核心方向:元素获取、内容修改和事件交互。
① ID精准定位:通过元素的id
属性进行唯一性查找
使用方法:document.getElementById('idName')
特点:
示例:
// ID精准定位(返回单个元素)
const header = document.getElementById('main-header');
② 类名批量获取:获取相同类名的元素组
使用方法:document.getElementsByClassName('className')
特点:
示例:
// 类名批量获取(返回动态集合)
const cards = document.getElementsByClassName('card');
③ CSS选择器查询:用于复杂条件下的元素定位
使用方法:
document.querySelector() :获取首个匹配元素
document.querySelectorAll() :获取所有匹配元素
特点:
示例:
// 获取单个元素(首个匹配项)
const btn = document.querySelector('.submit-btn');
// 获取多个元素(静态集合)
const navLinks = document.querySelectorAll('nav a');
特性:
使用场景:
示例:
你好,世界!
//先获取box元素
var box = document.querySelector('.box');
console.log(box);//打印出 你好,世界!
//修改其内容直接赋值
var newbox = box.innerText = "Hello World!"
console.log(newbox);//打印出 Hello World!
特性:
使用场景:
示例:
你好博主
var div1 = document.querySelector('.div1');
div1.innerHTML = div1.innerHTML + '百度'; //增加的是超链接,而不是文字内容
适用范围:
特性:
示例:
console.log(input1.value);//输出input单行输入框的值
方法:通过style
属性直接修改
element.style.属性 = 属性值 (注意:属性值为String类型)
特点:
示例:
const progressBar = document.querySelector('.progress');
// 单个属性设置
progressBar.style.width = "100px";
方法:通过classList伪数组来进行增加样式或者移除
方法列表:
add()
:添加类remove()
:移除类toggle()
:切换类replace()
:替换类特点:
示例:
CSDN
点击更改div3的样式
var div3 = document.querySelector('.div3');
funion div4Click(){
if(div3.classList.contains('div666')){
div3.classList.remove('div666')
}else{
div3.classList.add('div666')
}
}
在 JavaScript 中,setAttribute
和 getAttribute
是用于操作 HTML 元素属性的常用方法。它们允许你动态地设置和获取元素的属性值。
setAttribute
方法setAttribute
方法用于为 HTML 元素设置一个属性。如果该属性已经存在,则更新其值;如果不存在,则添加该属性。
语法:element.setAttribute(name, value);
name
: 要设置的属性名称(字符串)。
value
: 要设置的属性值(字符串)
示例:
setAttribute Example
这是一个div元素
getAttribute
方法getAttribute
方法用于获取 HTML 元素的指定属性值。如果该属性不存在,则返回 null
。
语法:element.getAttribute(name);
name
: 要获取的属性名称(字符串)。
示例:
getAttribute Example
这是一个div元素
属性名大小写敏感:setAttribute
和 getAttribute
方法对属性名是大小写敏感的。例如,class
和 CLASS
被视为不同的属性。
布尔属性:对于布尔属性(如 disabled
、checked
等),setAttribute
会将属性值设置为字符串 "true"
或 "false"
,而不是布尔值 true
或 false
。
const inputElement = document.createElement('input');
inputElement.setAttribute('disabled', 'true'); // 设置 disabled 属性
console.log(inputElement.getAttribute('disabled')); // 输出: "true"
在 JavaScript 中,事件绑定是将用户操作(如点击、鼠标移动、键盘输入等)与 JavaScript 函数关联起来的过程。常见的事件绑定方式有三种:
直接在 HTML 元素中使用事件属性(如 onclick
、onmouseover
等)来绑定事件处理函数。
语法:
特点:
简单直接,适合快速测试。
将 JavaScript 代码与 HTML 混合在一起,不利于代码维护和分离。
只能绑定一个事件处理函数,后续绑定会覆盖之前的绑定。
示例:
通过 JavaScript 直接操作 DOM 元素的属性(如 onclick
、onmouseover
等)来绑定事件处理函数。
语法:element.事件属性 = 函数;
特点:
将 JavaScript 代码与 HTML 分离,便于维护。
只能绑定一个事件处理函数,后续绑定会覆盖之前的绑定。
适合简单场景,但不适合需要绑定多个事件处理函数的情况。
示例:
addEventListener
方法使用 addEventListener
方法为元素绑定事件处理函数。这是最推荐的方式,因为它支持绑定多个事件处理函数,且更灵活。
语法:element.addEventListener(事件类型, 事件处理函数, 是否使用捕获);
事件类型:字符串,表示事件类型(如 "click"
、"mouseover"
等)。
事件处理函数:事件触发时执行的函数。
是否使用捕获:布尔值,可选参数,默认为 false
(表示使用冒泡阶段)。如果为 true
,则表示使用捕获阶段。
特点:
支持绑定多个事件处理函数,不会覆盖之前的绑定。
更灵活,可以指定事件捕获或冒泡阶段。
推荐使用,适合复杂的交互场景。
示例:
方式 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
HTML 事件属性 | 简单直接,适合快速测试 | 代码耦合,不利于维护;只能绑定一个函数 | 简单测试 |
DOM 属性绑定 | 代码分离,便于维护 | 只能绑定一个函数 | 简单场景 |
addEventListener |
支持多个函数绑定,灵活,推荐使用 | 语法稍复杂 | 复杂交互场景 |
本篇博客从基础到进阶,详细讲解了 JavaScript 中 DOM 操作的各个方面,包括元素获取、内容操作、样式控制、自定义属性操作以及事件绑定。通过学习这些内容,读者可以掌握如何动态操作网页内容、样式和交互行为,为构建复杂的 Web 应用打下坚实基础。无论是初学者还是有一定经验的开发者,都能从中获得实用的知识和技巧。
欢迎到评论区一起讨论~