JavaScript 之 节点操作
一、文档树结构
DOM 可以将任何 HTML 或 XML 描绘成一个由多层节点构成的结构。
节点(Node)构成 HTML 文档最基本的的单元。
节点分为不同的类型,每种类型分别表示文档中不同的信息。每个节点都拥有各自的特点、数据和方法,另外也与其他节点存在某种关系。
节点之间的关系构成了层次,而所有页面标记则表现为一个以特定节点为根节点的树形结构。
节点类型:文档节点、元素节点、属性节点、文本节点、注释节点
整个文档是一个文档节点;
每个HTML元素是元素节点;
每个HTML元素是属性节点;
HTML元素内的文本是文本节点;
注释是注释节点;
文档树:

二、节点层级
节点层级:

节点层次常用方法
parentNode: 获取当前元素的父节点(只有一个)
childNodes: 获取当前元素的所有子节点(有多个)
children: 获取当前元素的子元素节点
firstChild : 获取第一个子节点
lastChild: 获取最后一个子节点
nextSibling: 获取下一个兄弟节点
previousSibling: 获取上一个兄弟节点
nextElementSibling: 获取下一个兄弟元素节点
previousElementSibling: 获取上一个兄弟元素节点
注意:
nextElementSibling和previousElementSibling有兼容性问题,IE9 以后才支持
firstElementChild 和 lastElementChild 有兼容性问题,IE9 以后才支持
处理浏览器兼容性:
// 处理浏览器兼容性
// 获取第一个子元素
function getFirstElementChild(element) {
var node, nodes = element.childNodes, i = 0;
while (node = nodes[i++]) {
if (node.nodeType === 1) {
return node;
}
}
return null;
} // 处理浏览器兼容性
// 获取下一个兄弟元素
function getNextElementSibling(element) {
var el = element;
while (el = el.nextSibling) {
if (el.nodeType === 1) {
return el;
}
}
return null;
}
节点操作常用方法
appendChild()
insertBefore()
removeChild()
replaceChild()
三、节点属性
1、nodeType 节点类型属性
返回一个整数,这个数值代表这给定节点的类型,只读类型。
- 1 代表 元素节点
- 2 代表 属性节点
- 3 代表 文本节点
2、nodeName 节点名称属性(标签名称)
代表当前节点的名字,只读属性。如果给定节点是一个文本节点,nodeName 属性将返回内容为 #text 的字符串。
3、nodevalue 节点值
返回给定节点的当前值(字符串),可读写的属性
(1)元素节点的 nodeValue 始终是 null
(2)属性节点:返回值是这个属性的值
(3)文本节点:返回值是这个文本节点的内容

四、节点操作
1、DOM查询
|
功能 |
API |
返回值 |
|
●在整个文档范围内查询元素节点 |
||
|
根据id值查询 |
document.getElementById(“id值”) |
一个具体的元素节点 |
|
根据标签名查询 |
document.getElementsByTagName(“标签名”) |
元素节点数组 |
|
根据name属性值查询 |
document.getElementsByName(“name值”) |
元素节点数组 |
|
●在具体元素节点范围内查找子节点 |
||
|
查找全部子节点 |
element.childNodes【W3C考虑换行,IE≤8不考虑】 |
节点数组 |
|
查找第一个子节点 |
element.firstChild【W3C考虑换行,IE≤8不考虑】 |
节点对象 |
|
查找最后一个子节点 |
element.lastChild【W3C考虑换行,IE≤8不考虑】 |
节点对象 |
|
查找指定标签名的子节点 |
element.getElementsByTagName(“标签名”) |
元素节点数组 |
|
●查找指定元素节点的父节点:element.parentNode |
||
|
●查找指定元素节点的兄弟节点 |
||
|
查找前一个兄弟节点 |
node.previousSibling【W3C考虑换行,IE≤8不考虑】 |
节点对象 |
|
查找后一个兄弟节点 |
node.nextSibling【W3C考虑换行,IE≤8不考虑】 |
节点对象 |
2、DOM 增删改
|
API |
功能 |
|
document.createElement(“标签名”) |
创建元素节点并返回,但不会自动添加到文档中 |
|
document.createTextNode(“文本值”) |
创建文本节点并返回,但不会自动添加到文档中 |
|
element.appendChild(ele) |
将ele添加到element所有子节点后面 |
|
parentEle.insertBefore(newEle,targetEle) |
将newEle插入到targetEle前面 |
|
parentEle.replaceChild(newEle, oldEle) |
用新节点替换原有的旧子节点 |
|
parentEle.removeChild(childNode) |
删除指定的子节点 |
|
element.innerHTML |
读写HTML代码 |
JavaScript 之 节点操作的更多相关文章
- JavaScript DOM节点操作总结
节点类型 节点类型主要有三种:元素节点,属性节点和文本节点. 而对DOM的主要也就是围绕元素节点和属性节点的增删改查.下面就分别从对元素节点的操作和对属性节点的操作来介绍. 元素节点 查 在对DOM进 ...
- 前端之javascript的节点操作和Event
一 节点的增删改查 创建节点:createElement(标签名):创建一个指定名称的节点. 追加节点: 追加一个子节点:somenode.appendChild(标签名) 指定某个位置前面添加一个节 ...
- javaScript之节点操作
javaScript程序员避免不了要操作页面中的DOM,除了经常使用的: appendChild()向childNodes列表的末尾添加一个节点. insertBefore(),接受两个参数,要插入的 ...
- JavaScript DOM–节点操作
节点 节点至少拥有nodeType(节点类型).nodeName(节点名称)和nodeValue(节点值)这三个基本属性. 元素节点 nodeType 为1 属性节点 nodeType 为2 文本 ...
- JavaScript 节点操作Dom属性和方法(转)
JavaScript 节点操作Dom属性和方法 一些常用的dom属性和方法,列出来作为手册用. 属性: 1.Attributes 存储节点的属性列表(只读) 2.childNodes 存储 ...
- 第一百二十六节,JavaScript,XPath操作xml节点
第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...
- JavaScript -- 节点操作, 事件触发, 表单伸缩
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 前端JavaScript之DOM节点操作
1.HTML DOM是啥 Document Object Model:定义了访问和操作HTML文档的标准方法,把HTML文档呈现为带有元素,属性和文本的树状结构 2.解析过程 HTML加载完毕,渲染引 ...
- JavaScript之DOM操作,事件操作,节点操作
1,DOM操作 1.1 概念 所谓DOM,全称Document Object Model 文档对象模型,DOM是W3C(World Wide Web Consortuum )标准,同时也定义了访问诸 ...
随机推荐
- 编程语言及python介绍
编程语言及python介绍 1.编程语言分类 机器语言 优点:执行效率高 缺点:开发效率极低,跨平台性差 汇编语言 优点:较机器语言执行效率稍低 缺点:较机器语言开发效率稍高,仍然很低,跨平台性差 高 ...
- 常用dos命令(2)
文件管理 type 显示文本文件的内容. copy 将一份或多份文件复制到另一个位置. del 删除一个或数个文件. move 移动文件并重命名文件和目录.(Windows XP Home Editi ...
- JavaScript插件开发
一.前言 通过 "WWW" 原则我们来了解 JavaScript 插件这个东西 第一个 W "What" -- 是什么?什么是插件,我就不照搬书本上的抽象概念了 ...
- 使用Swagger2构建SpringMVC项目中的Restful API文档
使用Swagger自动生成API文档,不仅增加了项目的可维护性,还提高了API的透明度更利于快速测试等工作,便于更快地发现和解决问题. 本篇文章只记录整合过程,关于Security Configura ...
- ##ant 打包apk
ant 打包apk 1. 参考: Android Ant 批量多渠道打包实例 单个渠道类似操作,只不过不用修改build.xml文件 2. 修改ant debug的包签名,使用和release版本相同 ...
- Android Studio 之 GridView
1. 数据源 ArrayList Cursor 2. 适配器 Adapter ArrayAdapter SmipleAdapter SmipleCursorAdapter BaseAdapter
- 《Linux就该这么学》培训笔记_ch14_使用DHCP动态管理主机地址
<Linux就该这么学>培训笔记_ch14_使用DHCP动态管理主机地址 文章最后会post上书本的笔记照片. 文章主要内容: 动态主机地址管理协议 部署dhcpd服务程序 自动管理IP地 ...
- kali 破解wifi
1.查看网卡名称:iwconfig 有一块 名为wlan0 的无线网卡通过一下命令排除影响因素 root@jkali:~# iwconfig lo no wireless extensions. wl ...
- Alpha冲刺——总结篇
课程信息 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺 团队目标 切实可行的计算机协会维修预约平台 团队信息 队员学号 队员姓名 个人博客地址 备注 22 ...
- 一文带你了解 Flink 的基本组件栈
作为实时计算领域的佼佼者,Flink 的基本组件同样值得我们仔细研究. Flink 同样遵循着分层的架构设计理念,在降低系统耦合的同时,也为上层用户构建 Flink 应用提供了丰富且友好的接口. Fl ...