【Web APIs】JavaScript 节点操作 ① ( DOM 方式获取标签元素的弊端 | 节点简介 | DOM 节点概述 | 节点基本属性 - 节点类型、节点名称、节点值 )
文章目录
一、DOM 方式获取标签元素
1、DOM 方式获取标签元素
之前的博客 中 , 介绍了 使用 DOM 方式 获取元素 , 如 :
- getElementById() 通过 标签 id 获取对应的标签 ;
- getElementsByTagName() 通过 标签名称 获取符合要求的 多个元素 ;
- querySelector() 通过 标签选择器 选择多个元素 ;
2、DOM 方式获取标签元素的弊端
DOM 方式获取标签元素 的 弊端 : 上述 获取 标签元素 的 方法 , 使用起来非常 繁琐 , 而且每个获取元素的方法 都是互相独立的 , 标签元素之间 的 逻辑性教差 ;
如给定如下结构的 HTML 页面 :
<div>div</div>
<span>span</span>
<ul>
<li>li</li>
<li>li</li>
<li>li</li>
<li>li</li>
</ul>
<div class="box">
<span class="erweima">×</span>
</div>
如果 想要获取 <div>div</div> 元素 , 需要使用 document.querySelector("div") 获取对应的 标签元素 ;
如果 想要 继续 获取 <span>span</span> 元素 , 需要使用 document.querySelector("span") 获取对应的 标签元素 ;
如果想要 获取 ul 标签下的 li 标签 , 需要先获取 ul 标签元素 , 然后再获取下面的 li 子元素 ;
const liElements = document.querySelectorAll('ul li');
上述 三个获取标签元素的操作 , 都是互相独立的 , 且不知道三个标签元素之间的关系 , 逻辑性也不强 ;
3、DOM 方式获取标签元素示例
代码示例 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>节点操作</title>
</head>
<body>
<div>div</div>
<span>span</span>
<ul>
<li>li</li>
<li>li</li>
<li>li</li>
<li>li</li>
</ul>
<div class="box">
<span class="erweima">×</span>
</div>
<script>
// DOM 方式获取标签元素
var box = document.querySelector('.box');
console.dir(box);
</script>
</body>
</html>
执行结果 :

二、节点简介
1、DOM 节点概述
HTML 页面中 的内容 都是 节点 , 包括 : 标签 , 属性 , 文本 , 注释 等 ;
在一个 HTML 结构中 , 所有的 DOM 节点 组成一个 DOM 树 , 根节点是 document 文档节点 , 所有的 DOM 节点 都可以被 创建、访问、修改、 删除 ;
- 根节点 是 document 文档节点 ;
- 普通的 HTML 标签 是 元素节点 ;
- 元素节点下 有 属性节点 和 文本节点 ;
2、节点基本属性 - 节点类型、节点名称、节点值
每个 DOM 节点 都有 三个基本属性 , 这些属性描述了节点的 特征 和 行为 ;
- 节点类型 nodeType : 用于 区分不同节点类型 , 便于在脚本中处理 ;
- 1 : 元素节点 ;
- 2 : 文本节点 ;
- 3 : 注释节点 ;
- 4 : 文档节点 ;
- 节点名称 nodeName : 表示节点的名称 , 是一个字符串值 , 具体取决于节点类型 , 用于标识节点的名称 , 常用于遍历或筛选节点 ;
- 元素节点 : 返回标签名 , 大写形式 , 如 "DIV ;
- 文本节点 : 返回 “#text” ;
- 注释节点 : 返回 “#comment” ;
- 文档节点 : 返回 “#document” ;
- 节点值 nodeValue : 表示节点的值 , 是一个 字符串 或 null , 具体取决于节点类型 , 其作用是 获取或设置节点的内容 , 适用于文本处理 ;
- 元素节点 : 通常为 null , 因为元素节点无直接值 ;
- 文本节点 : 返回文本内容 ;
- 注释节点 : 返回注释内容 ;
在 DOM 操作中 , 一般操作的是 元素节点 ;
一般不会操作 注释节点 , 注释节点没有太大意义 ;
3、代码示例
在下面的代码中 , 通过 box.nodeType 获取节点类型 , 通过 box.nodeName 获取节点名称 , 通过 box.nodeValue 获取节点值 ;
代码示例 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>节点操作</title>
</head>
<body>
<div>div</div>
<span>span</span>
<ul>
<li>li</li>
<li>li</li>
<li>li</li>
<li>li</li>
</ul>
<div class="box">
<span class="erweima">×</span>
</div>
<script>
// DOM 方式获取标签元素
var box = document.querySelector('.box');
console.dir(box);
console.log(box.nodeType); // 输出 : 1 (元素节点)
console.log(box.nodeName); // 输出 : "DIV"
console.log(box.nodeValue); // 输出 : null
</script>
</body>
</html>
执行结果 :

点击 div.box 左侧的 展开按钮 , 查看完整的 节点属性 , 其中就包含了 nodeName , nodeType , nodeValue 三个属性 ;

更多推荐
所有评论(0)