* 1、DOM节点
* 一般来说我们分为三个大类
元素节点(标签)/文本节点(标签内的文字)/属性节点(标签上的属性)
- 元素节点
- 通过getElementBy. ..获取到的都是元紊节点
- 属性节点
- 文本节点
* 2、获取子节点
`<div>
<p>你好</p>
<span>测试文本</span>
<h1>JS123456789!!!!</h1>
</div>`
- 1.获取某一结点下所有的子一级 节点,获取到的是一个伪数组
var oDiv = document.querySelector('div')
- 2.获取某一节点下所有的子一级 元素节点,获取到的是一个伪数组
var oDiv = document.querySelector('div')
console.log(oDiv.children)
var oDiv = document.querySelector('div')
console.log(oDiv.firstChild)
var oDiv = document.querySelector('div')
console.log(oDiv.lastChild)
- 5.获取某一节点下子一级的 第一个元素节点(标签节点)
var oDiv = document.querySelector('div')
console.log(oDiv.firstElementChild)
var oDiv = document.querySelector('div')
console.log(oDiv.lastElementChild)
* 3、获取兄弟节点
`<div>
<p>你好</p>
<span>测试文本</span>
<h1>JS123456789!!!!</h1>
</div>`
var oSpan = document.querySelector('span')
console.log(oSpan.nextSibling)
var oSpan = document.querySelector('span')
console.log(oSpan.previousSibling)
var oSpan = document.querySelector('span')
console.log(oSpan.nextElementSibling)
- 4.获取对应的 上一个兄弟元素节点
- 语法:元素.previousElementSibling
var oSpan = document.querySelector('span')
console.log(oSpan.previousElementSibling)
* 4、获取父节点与属性节点
`<div>
<p>你好</p>
<span>测试文本</span>
<h1>JS123456789!!!!</h1>
</div>`
var oH = document.querySelector('h1')
console.log(oH.parentNode)
var oH = document.querySelector('h1')
console.log(oH.attributes)
console.log(oH.getAttribute('id'))
console.log(oH.attributes[0])
* 5、节点属性
`<ul text="我是UL的一个属性">
<li>你好</li>
<span>测试文本</span>
</ul>`
var oUl = document.querySelector('ul')
var eleNode = oUl.firstElementChild
console.log(eleNode)
var attrNode = oUl.attributes[0]
console.log(attrNode)
var textNode = oUl.firstChild
console.log(textNode)
- 1.nodeType 节点类型
- 节点中的一个属性 nodeType 能够区分当前节点是什么类型
- 1 -> 元素节点(标签)
- 2 -> 属性节点(标签上的属性)
- 3 -> 文本节点(标签内的文字)
console.log('元素节点:', eleNode.nodeType)
console.log('属性节点:', attrNode.nodeType)
console.log('文本节点:', textNode.nodeType)
- 2.nodeName 节点名称
- 元素节点(标签) -> 大写的标签名 (LI/UL/DIV)
- 属性节点(标签上的属性) -> text (属性名)
- 文本节点(标签内的文字) -> #text
console.log('元素节点:', eleNode.nodeName)
console.log('属性节点:', attrNode.nodeName)
console.log('文本节点:', textNode.nodeName)
- 3.nodeValue 节点的值
- 元素节点(标签) -> 没有nodeValue 也就是会输出null
- 属性节点(标签上的属性) -> 对应的属性值
- 文本节点(标签内的文字) -> 对应的文本内容
console.log('元素节点:', eleNode.nodeValue)
console.log('属性节点:', attrNode.nodeValue)
console.log('文本节点:', textNode.nodeValue)