所谓的节点:
html 文件中 任意的一个内容,都是节点
标签,属性,内容文本,注释
获取节点之后,可以使用JavaScript定义的方式来操作节点
如果你获取的是一个标签,节点,就跟你获取一个标签对象,是一样的
我们使用获取标签对象的方式,和,使用获取标签节点的方式,获取的内容是一样的
都在支持所有的操作方式
父标签对象
htmlcssjs
<div><!--我是第一个注释内容-->
我是div标签
<!--我是第二个注释内容-->
<pid="p1"class="p2">我是p标签</p>
<!--我是第三个注释内容-->
<spanid="span1"class="span2"name="span"index="123">我是span标签</span>
<!--我是第四个注释内容-->
<h1id="h1"class="h2">我是h1标签</h1>
</div>
随便写写
var oDiv = document.querySelector('div');
var oSpan = document.querySelector('span');
// 1, 父级标签对象.childNodes 获取父级标签对象中,所有子级节点
// 执行结果是一个伪数组,支持forEach
console.log(oDiv.childNodes); //NodeList(14) [comment, text, comment, text, p#p1.p2, text, comment, text, span#span1.span2, text, comment, text, h1#h1.h2, text]
// 2, 父级标签对象.children 获取父级标签中的元素节点 只获取 标签节点
// 执行结果是一个伪数组, 不支持forEach
console.log(oDiv.children); //HTMLCollection(3) [p#p1.p2, span#span1.span2, h1#h1.h2, p1: p#p1.p2, span1: span#span1.span2, span: span#span1.span2, h1: h1#h1.h2]
// 3, 父级标签对象.firstChild 获取第一个节点 所有的节点中的第一个
// 执行结果是一个唯一的对象
console.log(oDiv.firstChild); //
// 4, 父级标签对象.lastChild 获取最后一个节点 所有的节点中的最后一个
// 执行结果是一个唯一的对象
console.log(oDiv.lastChild); //#text
// 5, 父级标签对象.firstElementChild 获取第一个标签节点 所有节点中的第一个标签节点
// 执行结果是一个唯一的对象
console.log(oDiv.firstElementChild); //<p id="p1" class="p2">我是p标签</p>
// 6, 父级标签对象.lastElementChild 获取最后一个标签节点 所有节点中的最后一个标签节点
// 执行结果是一个唯一的对象
console.log(oDiv.lastElementChild); //<h1 id="h1" class="h2">我是h1标签</h1>
子标签对象
htmlcssjs
<div><!--我是第一个注释内容-->
我是div标签
<!--我是第二个注释内容-->
<pid="p1"class="p2">我是p标签</p>
<!--我是第三个注释内容-->
<spanid="span1"class="span2"name="span"index="123">我是span标签</span>
<!--我是第四个注释内容-->
<h1id="h1"class="h2">我是h1标签</h1>
</div>
随便写写
var oDiv = document.querySelector('div');
var oSpan = document.querySelector('span');
// 7, 当前标签对象.previousSibling 获取上一个兄弟节点 所有节点中的上一个兄弟节点
// 执行结果是一个唯一的对象
console.log(oSpan.previousSibling); //#text
// 8, 当前标签对象.nextSibling 获取下一个兄弟节点 所有节点中的下一个兄弟节点
// 执行结果是一个唯一的对象
console.log(oSpan.nextSibling); //#text
// 9, 当前标签对象.previousElementSibling 获取上一个兄弟标签节点 所有节点中的上一个兄弟标签节点
// 执行结果是一个唯一的对象
console.log(oSpan.previousElementSibling); //<p id="p1" class="p2">我是p标签</p>
// 10, 当前标签对象.nextElementSibling 获取下一个兄弟标签节点 所有节点中的下一个兄弟标签节点
// 执行结果是一个唯一的对象
console.log(oSpan.nextElementSibling); //<h1 id="h1" class="h2">我是h1标签</h1>
// 11, 当前标签对象.parentNode 获取父级节点 获取直接父级
// 执行结果是一个唯一的对象
console.log(oSpan.parentNode);
/* <div><!-- 我是第一个注释内容 -->
我是div标签
<!-- 我是第二个注释内容 -->
<p id="p1" class="p2">我是p标签</p>
<!-- 我是第三个注释内容 -->
<span id="span1" class="span2" name="span" index="123">我是span标签</span>
<!-- 我是第四个注释内容 -->
<h1 id="h1" class="h2">我是h1标签</h1>
</div>*/
// 12, 当前标签对象.attributes 获取所有属性节点
// 执行结果是一个伪数组,不支持forEach
console.log(oSpan.attributes); //NamedNodeMap {0: id, 1: class, 2: name, 3: index, id: id, class: class, name: name, index: index, length: 4}

Comments | NOTHING