js 中的 dom 操作回顾
· 阅读需 7 分钟
创建节点
- document.body 指向的是 body 元素
- document.documentElement 则指向 html 元素
//创建节点
var createNode = document.createElement("div");
var createTextNode = document.createTextNode("hello world");
createNode.appendChild(createTextNode);
document.body.appendChild(createNode);
document.documentElement.appendChild(createNode);
插入节点
可以使用
- appendChild
- insertBefore insertBefore 接收两个参数,第一个是插入的节点,第二个是参照节点,如 insertBefore(a,b),则 a 会插入在 b 的前面
//插入节点
var createNode = document.createElement("div");
var createTextNode = document.createTextNode("hello world");
createNode.appendChild(createTextNode);
var div1 = document.getElementById("div1");
document.body.insertBefore(createNode,div1);
替换和删除元素
从 replaceChild 和 removeChild 的字面意思看,就是删除子节点,因此调用者,需要包含子节点 div1,不然调用会报错。返回的节点是替换的或删除的元素,被替换 / 删除的元素仍然存在,但 document 中已经没有他们的位置了。
//替换元素
var replaceChild = document.body.replaceChild(createNode,div1);
//删除元素
var removeChild = document.body.removeChild(div1);
节点的属性
- firstChild: 第一个子节点
- lastChild: 最后一个子节点
- childNodes: 子节点集合,获取其中子节点可以
someNode.childNodes[index]
或者someNode.childNodes.item(index)
- nextSibling: 下一个兄弟节点
- previousSibling:上一个兄弟节点
- parentNode:父节点