知识梳理

// . 创建节点
// . 插入节点
// . 删除节点
// . 复制节点
// . 替换节点

一 插入节点

1)基本语法

parentNode.insertBefore(newNode,referenceNode); //在指定元素前面插入元素
// parentNode 父节点
// newNode 要插入的节点
// referenceNode 将要插在这个节点之前
// 返回被插入节点(newNode)

element.appendChild(aChild);//在元素末尾压入子元素
//aChild 要追加给父节点(通常为一个元素)的节点

2)代码范例

<div>
    <p>你好</p>
</div>
<script>
    var div = document.getElementsByTagName('div');
    var newNode = document.createElement('span');
    newNode.innerHTML = '我是新插入的元素';
    var result = div[0].insertBefore(newNode,div[0].children[0]);
    console.log(result);//<span>我是新插入的元素</span>
</script>

二 删除子节点

1)基本语法

node.removeChild(child);
// node  父节点
// child  子节点
// 返回删除的节点

2)代码范例

<div>
    <p>p元素</p>
    <span>span元素</span>
</div>
<script>
    var div = document.getElementsByTagName('div');
    var res = div[0].removeChild(div[0].children[0]);
    console.log(res);//<p>p元素</p>
</script>

三 复制节点

1)基本语法

var dupNode = node.cloneNode();//浅拷贝 只复制节点本身
var dupNode = node.cloneNode(true);//深拷贝 复制节点本身和所以子节点
//node 被克隆的对象
//dupNode 克隆生成的节点副本

2)代码范例

<p><span>你好</span></p>
<script>
    var p = document.getElementsByTagName('p');
    var dup = p[0].cloneNode();//浅拷贝
    var deepDup = p[0].cloneNode(true);//深拷贝
    console.log(dup);//<p></p>
    console.log(deepDup);//<p><span>你好</span></p>
</script>

四 替换节点

1)基本语法

parentNode.replaceChild(newChild, oldChild);
//newChild 用来替换 oldChild 的新节点 如果该节点已经存在于 DOM 树中,则它首先会被从原始位置删除
//oldChild 被替换掉的原始节点。
//返回被替换的节点

2)代码范例

<div>
    <p>你好</p>
</div>
<script>
    var div = document.getElementsByTagName('div');
    var newChild = document.createElement('span');
    newChild.innerHTML = '我也好';
    var result = div[0].replaceChild(newChild,div[0].children[0]);
    console.log(result);//<p>你好</p> 返回被替换的节点
</script>