1. 节点之间的关系
1.1 第一种获取方式
以下获取节点都会获取所有的节点类型,不只是包括元素节点,还有文本类型等
-
获取一个元素节点的所有子节点
元素节点对象.childNodes
获取到的是一个类数组
NodeList
-
获取一个元素节点的第一个子节点
元素节点对象.firstChild
-
获取一个元素节点的最后一个子节点
元素节点对象.lastChild
-
获取一个元素节点的下一个节点对象
元素节点对象.nextSibling
-
获取一个元素节点的上一个节点对象
元素节点对象.previousSibling
-
获取一个元素节点的父节点
元素节点对象.parentNode
1.2 第二种获取方式
以下获取节点只会获取到元素节点类型
-
获取一个元素节点的所有子节点
元素节点对象.children
获取到的是一个类数组
HTMLCollection
-
获取一个元素节点的第一个元素子节点
元素节点对象.firstElementChild
-
获取一个元素节点的最后一个元素子节点
元素节点对象.lastElementChild
-
获取一个元素节点的下一个兄弟元素节点
元素节点对象.nextElementSibling
-
获取一个元素节点的上一个兄弟元素节点
元素节点对象.previousElementSibling
-
获取一个元素节点的元素父节点
元素节点对象.parentElement
-
获取一个元素节点的所有子节点个数
元素节点对象.childElementCount
2. 节点的增加,插入,替换,移除,克隆
2.1 增加节点
-
增加文本节点
var text = document.createTextNode("文本内容")
-
增加元素节点
var ele = document.createElement("元素名")
2.2 插入子节点
插入节点必须通过父元素进行插入
如把上面的文本节点添加到元素节点中去
-
追加法
语法:
父元素对象.appendChild(要插入的节点对象名)
ele.appendChild(text);
-
在某一个子节点前插入节点
语法:
父元素对象.insertBefore(要插入的节点对象名,插入到哪个元素节点前)
ele.insertBefore(text,ele.lastElementChild); ele.insertBefore(text,null); ele.insertBefore(text,undefined);
如果第二个参数传入的是undefined
或者null
,那么效果跟appendChild
方法一样
2.3 替换子节点
语法:父元素节点对象.replaceChild(新的节点,旧的节点)
//例: 将第2个li替换成p元素 <ul class="ul1"> <li>第 1 个 li</li> <li>第 2 个 li</li> <li>第 3 个 li</li> </ul> var ul = document.querySelector(".ul1"); var p = document.createElement("p"); ul.replace(p,ul.firstElement.nextElementSibling);
2.4 移除子节点
语法: 父元素节点对象.removeChild(要移除的子节点对象)
例: ul.replace(ul.lastElementChild);
2.5 克隆节点
语法: 要复制的节点对象.cloneNode(true/false)
true表示深复制,就是全部复制,子孙之类的全部复制
false表示浅复制,就是只复制当前的节点,子孙节点不会复制
var ul = document.querySelector(".ul1"); <ul class="ul1"> <li>第 1 个 li</li> <li>第 2 个 li</li> <li>第 3 个 li</li> </ul> //复制一份ul成为ul的下一个兄弟 ul.parentElement.insertBefore(ul.cloneNode(true),ul.nextElementSibling);