节点
DOM(文档对象模型)的定义:定义访问和处理HTML文档的标准方法。
是关于如何获取,修改,添加或删除HTML元素的标准
HTML文档中的所有内容都是节点
常见的DOM节点:
- 元素节点:每个HTML元素,即标签
- 文本节点:HTML元素内的文本
- 属性节点:每个HTML元素属性
- 文档节点:整个文档
- 注释节点:注释
HTML DOM将HTML文档视作带有元素、属性和文本的树结构,称为节点树
节点树中的节点彼此拥有层次关系:
- 节点树中,顶端节点称为根root
- 每个节点都有父节点,除了根(根没有父节点)
- 一个节点可拥有任意数量的子节点
- 同胞节点是指拥有相同父节点的节点
所有HTML元素被定义为对象,编程接口是对象方法和对象属性。方法是能够执行的动作(如添加或修改元素),属性是能够获取或设置的值(如节点的名称或内容)
方法
一些常用的HTML DOM对象方法:
属性
一些常用的HTML DOM对象属性:
- innerHTML :节点(元素)的文本值,可用于获取或改变任意HTML元素
- parentNode : 节点(元素)的父节点
- childNodes : 节点(元素)的子节点
- attributes : 节点(元素)的属性节点
nodeName
nodeName属性:指定节点的节点名称
- nodeName是只读属性
- 元素节点的nodeName与标签名相同
- 属性节点的nodeName与属性名相同
- 文本节点的nodeName始终是#text
- 文档节点的nodeName始终是 #document
<p id="demo">Hello Nico</p>
document.write(document.getElementById("demo").firstChild.nodeName); //#text
nodeValue
nodeValue属性:设置或返回指定节点的节点值
- 元素节点的nodeValue:undefined或null
- 文本节点的nodeValue:文本本身
- 属性节点的nodeValue:属性值
注:如果希望返回元素的文本,必须返回文本节点的值(element.childNodes[0].nodeValue)
nodeValue与innerHTML的区别:
document.write(document.getElementById("demo").innerHTML); //Hello Nico
等效于
document.write(document.getElementById("demo").firstChild.nodeValue); // Hello Nico
等效于
document.write(document.getElementById("demo").childNodes[0].nodeValue); // Hello Nico
nodeType
nodeType属性:返回节点的类型。是只读属性