【学习笔记40】DOM的节点操作
2023-09-11 14:14:57 时间
DOM的节点操作
一、获取DOM子节点
- 子节点:
元素.children
- 子元素节点:
元素.childNodes
<div class="box">
<p>我是p标签</p>
<span>我是span标签</span>
</div>
var oDiv = document.querySelector('div');
// 获取元素的所有子级元素节点(只能获取到标签)
console.log(oDiv.children);
console.log(oDiv.childNodes);
解释说明
/**
* oDiv.childNodes: ---> NodeList(5) [text, p, text, span, text]
*
* 获取所有的子级节点(会把换行识别为一个文本, 标签当成元素节点)
* div结束标签的位置开始, 到p标签开始位置的换行会被识别为一个text
* p标签会被识别为一个元素节点
* p结束标签到span开始标签前的换行,会被识别为一个text
* span标签会被是被识别为一个元素节点
* span标签结束位置到div结束标签前的换行,会被识别为一个text
*/
二、获取DOM第一个子节点
- 第一个子节点:
元素.firstChild
- 第一个子元素节点:
元素.firstElementChild
<div class="box">
<p>我是p标签</p>
<span>我是span标签</span>
</div>
var oDiv = document.getElementsByTagName('div')[0];
// 获取的是元素内部第一个子节点 (不一定是子元素节点)
console.log(oDiv.firstChild);
// 获取的是元素内部第一个子元素节点
console.log(oDiv.firstElementChild);
解释说明
/**
* console.log(oDiv.firstChild);
* 获取到div节点内的第一个子节点
* 注意此时并不是获取到了第一个元素节点,
* 而是div开始标签后到p开始标签前的一段换行, 这一段被识别为 text(文本节点)
*
* 除非你的HTML结构不写换行
*/
三、获取DOM最后一个子节点
- 最后一个子节点:
元素.lastChild
- 最后一个子元素节点:
元素.lastElementChild
<div class="box">
<p>我是p标签</p>
<span>我是span标签</span>
</div>
var oDiv = document.querySelector('div');
/*
获取最后一个子节点, 也就是span结束标签,
到div结束标签前的一个换行, 这里会被识别为text
*/
console.log(oDiv.lastChild);
// 获取最后一个子元素节点 ---> span
console.log(oDiv.lastElementChild);
四、获取兄弟节点
- 下一个兄弟节点:
元素.nextSibling
- 下一个兄弟元素节点:
元素.nextElementSibling
- 上一个兄弟节点:
元素.previousSibling
- 上一个兄弟元素节点:
元素.previousElementSibling
<ul>
<li id="a">1</li>
<li id="b">2</li>
<li id="c">3</li>
</ul>
var oli = document.getElementById('b');
// console.log(oli)
// 获取下一个兄弟节点
console.log(oli.nextSibling); // #text
// 获取下一个兄弟元素节点
console.log(oli.nextElementSibling); // <li id="c"></li>
// 获取上一个兄弟节点
console.log(oli.previousSibling); //#text
// 获取上一个兄弟元素节点
console.log(oli.previousElementSibling); // <li id="a"></li>
五、获取父级节点
- 父级节点:
元素.parentNode
<div>
<ul>
<li id="a">1</li>
<li id="b">2</li>
<li id="c">3</li>
</ul>
</div>
// 获取元素的父级节点(最近的父元素)
var oli = document.getElementById('b');
console.log(oli.parentNode);
六、节点分类
<ul x="100" y="200">
<li>我是ul的子级</li>
</ul>
1、节点分类
var oUl = document.querySelector('ul');
// 1. 元素节点
var ele = oUl.firstElementChild;
console.log(ele);
// 2. 文本节点
var text = oUl.firstChild;
console.log(text);
// 3. 属性节点
var attr = oUl.attributes[0];
console.log(attr);
2、nodeType节点类型
- 元素节点打印
1
- 文本节点打印
3
- 属性节点打印
2
var oUl = document.querySelector('ul');
// 1. 元素节点
var ele = oUl.firstElementChild;
// 2. 文本节点
var text = oUl.firstChild;
// 3. 属性节点
var attr = oUl.attributes[0];
console.log(ele.nodeType); // 元素节点打印1
console.log(text.nodeType); // 文本节点打印3
console.log(attr.nodeType); // 属性节点打印2
3、nodeName节点名称
- 元素节点节点名称
(大写)
文本
节点名称- 属性节点名称就是
属性名
var oUl = document.querySelector('ul');
// 1. 元素节点
var ele = oUl.firstElementChild;
// 2. 文本节点
var text = oUl.firstChild;
// 3. 属性节点
var attr = oUl.attributes[0];
console.log(ele.nodeName); // 元素节点节点名称 大写的LI
console.log(text.nodeName); // 文本节点名称#text
console.log(attr.nodeName); // 属性节点名称就是属性名
4、nodeValue节点的值
- 元素节点是没有
nodeValue
- 文本节点是
实际
的文本的值
- 属性节点是
实际
的属性值
<ul x="100" y="200">ul的内容<li>我是ul的子级</li></ul>
var oUl = document.querySelector('ul');
// 1. 元素节点
var ele = oUl.firstElementChild;
// 2. 文本节点
var text = oUl.firstChild;
// 3. 属性节点
var attr = oUl.attributes[0];
console.log(ele.nodeValue); // 元素节点是没有nodeValue
console.log(text.nodeValue); // 文本节点是实际的文本的值
console.log(attr.nodeValue); // 属性节点是实际的属性值
相关文章
- 11g RAC 加节点 之 手动加入vip 资源
- 【算法】【二叉树模块】找到二叉树中某个节点的后继节点
- Axure RP Pro 6.5修改站点地图,只显示需要的节点
- NodeVisitor的使用-遍历Geode节点下的Geometry并获取顶点、法向量等数据
- 31zTree - 高级 增 / 删 / 改 节点
- 29zTree - 用 zTree 方法 移动 / 复制节点
- ROS机器人程序设计(原书第2版)2.4.9 创建节点
- Memcached 笔记与总结(7)增加虚拟节点
- Javascript 笔记与总结(2-11)暴力操作节点
- OpenStack(四)——使用Kolla部署OpenStack多节点云
- k8s部署zookeeper集群(3节点,1个leader,2个follower)
- JQuery/JS插件 jsTree加载树,预先加载,初始化时加载前三级节点,当展开第三级节点时 就加载该节点下的所有子节点