一、节点操作分类
- 父节点 ---- node.parentNoed
- 子节点 ---- node.children 或 node.childNodes
- 兄弟节点 ---- node.previuouSibling 或 node.nextSibling 中间可以加Elements表示获取元素节点而不是所有节点的上一个或者下一个
二、父节点操作
- 如果没有父节点返回null
代码演示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul class="father">
<li class="child"></li>
</ul>
</body>
<script>
var child = document.querySelector('.child');
console.log(child.parentNode);
</script>
</html>
结果展示:
三、子节点操作
- node.childNodes ---- 获取所有的节点包括文本节点
- node.children ---- 只获取我们需要的元素节点
代码演示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>子元素节点</li>
<li>子元素节点</li>
<li>子元素节点</li>
<li>子元素节点</li>
<li>子元素节点</li>
</ul>
<script>
var ul = document.querySelector('ul');
// node.childNodes获取到的节点包括文本节点,一般不用
var lis = ul.childNodes;
console.log(lis);
// 第二种方法:node.children
var lisPlus = ul.children;
console.log(lisPlus);
</script>
</body>
</html>
展示结果:
四、兄弟节点操作
- node.nextSibling ---- 获取上一个节点(包括文本节点)
- node.nextElementSibling ---- 获取上一个元素节点
- node.previousSibling ---- 获取上一个节点(包括文本节点)
- node.previousElementSibling ---- 获取上一个元素节点
代码演示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="dage">我是大哥刘备</div>
<div class="erge">我是二哥关羽</div>
<div class="sandi">我是三弟张飞</div>
<script>
var erGe = document.querySelector('.erge');
// 输出上一个兄弟节点(包括文本节点)
console.log(erGe.previousSibling);
// 输出下一个兄弟(包括文本节点)
console.log(erGe.nextSibling);
// 输出上一个兄弟节点(包括文本节点)
console.log(erGe.previousElementSibling);
// 输出下一个兄弟(包括文本节点)
console.log(erGe.nextElementSibling);
</script>
</body>
</html>
展示结果:
五、注意事项
- 节点操作的时候最好使用querySelector或者querySelectorAll