何为DOM?————DOM是JS操作网页的接口,全程Document object model ——作用:将网页元素转为一个js对象,从而实现网页元素的增删改查等等。
1.节点层级
任何 HTML 或 XML 文档都可以用 DOM 表示为一个由节点构成的层级结构。节点分很多类型,每种类型对应着文档中不同的信息和(或)标记,也都有自己不同的特性、数据和方法,而且与其他类型有某种关系。这些关系构成了层级,让标记可以表示为一个以特定节点为根的树形结构。
其中,document 节点表示每个文档的根节点。在这里,根节点的唯一子节点是<html>元素,我们称之为文档元素(documentElement)。文档元素是文档最外层的元素,所有其他元素都存在于这个元素之内。每个文档只能有一个文档元素。在 HTML 页面中,文档元素始终是<html>元素。在 XML 文档中,则没有这样预定义的元素,任何元素都可能成为文档元素。HTML 中的每段标记都可以表示为这个树形结构中的一个节点。元素节点表示 HTML 元素,属性节点表示属性,文档类型节点表示文档类型,注释节点表示注释。DOM 中总共有 12 种节点类型,这些类型都继承一种基本类型。
2.节点
节点的类型一共有七种:
· 常用节点
1. 文档节点document
2.元素节点element
3. 属性节点attribute
4.文本节点text
-
其他节点
DocumentType
doctype标签(比如
<!DOCTYPE html>
)。Comment
注释
DocumentFragment
文档的片段
这七种节点都属于浏览器原生提供的节点对象(下面要讲的Node对象)的派生对象,具有一些共同的属性和方法。
节点树——————
最顶层是document节点,下面一层是html唯一子节点,也就是根节点(root node)
下面的分别为
: 父节点关系(parentNode)
:子节点关系(childNode)
:同级别节点关系(sibling)——兄弟节点,拥有同一个父节点
DOM提供操作接口,用来获取三种关系的节点。其中,子节点接口包括firstChild
(第一个子节点)和lastChild
(最后一个子节点)等属性,同级节点接口包括nextSibling
(紧邻在后的那个同级节点)和previousSibling
(紧邻在前的那个同级节点)属性。
1. firstChild
2. lastChild
3. nextSibling
4. previousSibling
Node 类型
:
属性:
1. nodeType
<script>
window.onload = function () {
console.log(document.body.firstChild.nodeType)
}
</script>
————输出结果为3
2. nodeName————以纯大写的方式,返回元素的标签名,如DIV,P,BUTTON
var two = document.getElementById('biaoqian')
console.log(two)
console.log(two.nodeName)
先,获取该元素,将元素赋值给一个变量,变量.nodeName————输出DIV
3. nodeValue————输出div子节点文本值,即
var three = document.getElementById('anniu')
console.log(three.firstChild.nodeValue)
先,获取该元素,将元素赋值给一个变量,变量.firstChild.nodeValue
4. textContent————输出包含本元素在内的所有子元素的文本值
var three = document.getElementById('anniu')
console.log(one.textContent)
——————
5. nextSibling————返回紧挨该元素的‘下一个’兄弟元素
var three = document.getElementById('anniu')
console.log(one.textContent)
console.log(one.nextSibling)
6. previousSibling————返回紧挨该元素的‘上一关’兄弟元素
var three = document.getElementById('anniu')
console.log(one.textContent)
console.log(one.previousSibling)
7. parentNode————返回该节点的父节点。
var four = document.getElementById('lianjie')
console.log(four.parentNode)
8. childNodes————返回该节点的所有子节点
console.log(document.body.childNodes)
————其中,过滤出所有元素节点的方法:
var res = [...document.body.childNodes].filter(function (a) {
return a.nodeType == 1
})
console.log(res)