JavaScript 之 节点操作 一、文档树结构 二、节点层级 三、节点属性  四、节点操作

   DOM 可以将任何 HTML 或 XML 描绘成一个由多层节点构成的结构。

   节点(Node)构成 HTML 文档最基本的的单元。

   节点分为不同的类型,每种类型分别表示文档中不同的信息。每个节点都拥有各自的特点、数据和方法,另外也与其他节点存在某种关系。

   节点之间的关系构成了层次,而所有页面标记则表现为一个以特定节点为根节点的树形结构。

   节点类型:文档节点、元素节点、属性节点、文本节点、注释节点

    整个文档是一个文档节点

    每个HTML元素是元素节点

    每个HTML元素是属性节点

    HTML元素内的文本是文本节点

    注释是注释节点

   文档树:

JavaScript 之 节点操作
一、文档树结构
二、节点层级
三、节点属性
 四、节点操作

二、节点层级

   节点层级:

          JavaScript 之 节点操作
一、文档树结构
二、节点层级
三、节点属性
 四、节点操作

     

   节点层次常用方法

parentNode: 获取当前元素的父节点(只有一个)
childNodes: 获取当前元素的所有子节点(有多个)
children:      获取当前元素的子元素节点
firstChild :     获取第一个子节点
lastChild:       获取最后一个子节点
nextSibling:   获取下一个兄弟节点
previousSibling: 获取上一个兄弟节点
nextElementSibling: 获取下一个兄弟元素节点
previousElementSibling: 获取上一个兄弟元素节点

    注意

    nextElementSibling和previousElementSibling有兼容性问题,IE9 以后才支持

    firstElementChild 和 lastElementChild 有兼容性问题,IE9 以后才支持

    处理浏览器兼容性:

 1 // 处理浏览器兼容性
 2 // 获取第一个子元素
 3 function getFirstElementChild(element) {
 4     var node, nodes = element.childNodes, i = 0;
 5     while (node = nodes[i++]) {
 6         if (node.nodeType === 1) {
 7             return node;
 8         }
 9     }
10     return null;
11 }
12 
13 // 处理浏览器兼容性
14 // 获取下一个兄弟元素
15  function getNextElementSibling(element) {
16     var el = element;
17     while (el = el.nextSibling) {
18       if (el.nodeType === 1) {
19           return el;
20       }
21     }
22     return null;
23   }

   节点操作常用方法

appendChild()
insertBefore()
removeChild()
replaceChild()

  

三、节点属性

  1、nodeType 节点类型属性

    返回一个整数,这个数值代表这给定节点的类型,只读类型。

    •  1  代表  元素节点
    •    2  代表  属性节点
    •    3  代表  文本节点

  2、nodeName 节点名称属性(标签名称)

    代表当前节点的名字,只读属性。如果给定节点是一个文本节点,nodeName 属性将返回内容为 #text 的字符串。

  3、nodevalue 节点值

       返回给定节点的当前值(字符串),可读写的属性

      (1)元素节点的 nodeValue 始终是 null

      (2)属性节点:返回值是这个属性的值

      (3)文本节点:返回值是这个文本节点的内容

  JavaScript 之 节点操作
一、文档树结构
二、节点层级
三、节点属性
 四、节点操作

 四、节点操作

  1、DOM查询

功能

API

返回值

●在整个文档范围内查询元素节点

根据id值查询

document.getElementById(“id值”)

一个具体的元素节点

根据标签名查询

document.getElementsByTagName(“标签名”)

元素节点数组

根据name属性值查询

document.getElementsByName(“name值”)

元素节点数组

 

●在具体元素节点范围内查找子节点

查找全部子节点

element.childNodes【W3C考虑换行,IE≤8不考虑】

节点数组

查找第一个子节点

element.firstChild【W3C考虑换行,IE≤8不考虑】

节点对象

查找最后一个子节点

element.lastChild【W3C考虑换行,IE≤8不考虑】

节点对象

查找指定标签名的子节点

element.getElementsByTagName(“标签名”)

元素节点数组

 

●查找指定元素节点的父节点:element.parentNode

 

●查找指定元素节点的兄弟节点

查找前一个兄弟节点

node.previousSibling【W3C考虑换行,IE≤8不考虑】

节点对象

查找后一个兄弟节点

node.nextSibling【W3C考虑换行,IE≤8不考虑】

节点对象

  2、DOM 增删改

API

功能

document.createElement(“标签名”)

创建元素节点并返回,但不会自动添加到文档中

document.createTextNode(“文本值”)

创建文本节点并返回,但不会自动添加到文档中

 

element.appendChild(ele)

将ele添加到element所有子节点后面

parentEle.insertBefore(newEle,targetEle)

将newEle插入到targetEle前面

 

 

parentEle.replaceChild(newEle, oldEle)

用新节点替换原有的旧子节点

parentEle.removeChild(childNode)

删除指定的子节点

 

 

element.innerHTML

读写HTML代码