持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天
DOM节点
DOM的节点我们一般分为常用的三大类 元素节点 / 文本节点 / 属性节点- 什么是分类,比如我们在获取元素的时候,通过各种方法获取到的我们叫做元素节点(标签节点)
- 比如我们标签
里面写的文字,那么就是文本节点 - 写在每一个标签上的属性,就是属性节点
元素节点
- 我们通过
getElementBy...获取到的都是元素节点
属性节点
- 我们通过
getAttribute获取的就是元素的属性节点
文本节点
- 我们通过
innerText获取到的就是元素的文本节点
获取节点
-
childNodes:获取某一个节点下 所有的子一级节点<body> <div> <p>hello</p> </div> <script> // 这个 oDiv 获取的是页面中的 div 元素,就是一个元素节点 var oDiv = document.querySelector('div') console.log(oDiv.childNodes) /* NodeList(3) [text, p, text] 0: text 1: p 2: text length: 3 __proto__: NodeList */ </script> </body> 复制代码- 我们会发现,拿到以后是一个伪数组,里面有三个节点
- 一个
text:从<div> 一直到 <p>中间有一个换行和一堆空格,这个是第一个节点,是一个文本节点 - 一个
p:这个p标签就是第二个节点,这个是一个元素节点 - 一个
text:从</p> 一直到 </div>中间有一个换行和一堆空格,这个是第三个节点,是一个文本节点 - 这个时候就能看到我们有不同的节点类型了
-
children:获取某一节点下所有的子一级 元素节点<body> <div> <p>hello</p> </div> <script> // 这个 oDiv 获取的是页面中的 div 元素,就是一个元素节点 var oDiv = document.querySelector('div') console.log(oDiv.children) /* HTMLCollection [p] 0: p length: 1 __proto__: HTMLCollection */ </script> </body> 复制代码- 我们发现只有一个节点了,因为
children只要元素节点 - div 下面又只有一个元素节点,就是
p - 所以就只有一个,虽然只有一个,但是也是一个 伪数组
- 我们发现只有一个节点了,因为
-
firstChild:获取某一节点下子一级的 第一个节点<body> <div> <p>hello</p> </div> <script> // 这个 oDiv 获取的是页面中的 div 元素,就是一个元素节点 var oDiv = document.querySelector('div') console.log(oDiv.firstChild) // #text </script> </body> 复制代码- 这个是只获取一个节点,不再是伪数组了
- 获取的是第一个
- 第一个就是
<div> 一直到 <p>的那个换行和空格,是个文本节点
-
lastChild:获取某一节点下子一级的 最后一个节点<body> <div> <p>hello</p> </div> <script> // 这个 oDiv 获取的是页面中的 div 元素,就是一个元素节点 var oDiv = document.querySelector('div') console.log(oDiv.lastChild) // #text </script> </body> 复制代码- 只获取一个节点,不再是伪数组
- 获取的是最后一个
- 最后一个就是
</p> 一直到 </div>之间的换行和空格,是个文本节点