DOM学习——创建、添加、删除、复制(克隆)节点

添加新元素:创建+添加节点

创建节点

document.createElement(‘tagName’) 创建有tagName 指定的HTML元素,因为这些元素原先不存在,是根据我们的需求动态生成的,所以,我们也称为动态创建元素节点。

注: 除了document.createElement(‘tagName’)之外,还有两种创建元素的方法(document.writr() 、element.innerHTML 三种创建元素的方法详解与比较在另一篇 博文.)

添加节点

在子节点后追加元素:node.appendChild(child) node-父级 child-子级
在某一指定元素前添加元素:node.insertBefore(child,指定元素) node-父级 child-子级

<ul>
    <li>123</li>
</ul>
//1.创建元素节点
var li = document.createElement('li');
var ul = document.querySelector('ul');//获取父级
//1.创建元素节点
var li = document.createElement('li');
//2. 添加节点node.appendChild(child)  node-父级 child-子级
ul.appendChild(li);//appendChild 是后面追加元素,类似于数组中的push
//3.insertBefore()在指定位置前添加新元素
var li3 = document.createElement('li');
ul.insertBefore(li3,ul.children[0]);//在ul第一个元素前添加

删除节点

node.removeChild(child) 方法从DOM中删除一个子节点,返回删除的节点

<button>删除</button>
<ul>
    <li>111</li>
    <li>222</li>
</ul>
<script>
    var ul = document.querySelector('ul');//获取父级
    var btn = document.querySelector('button');
    btn.onclick = function(){
    	ul.removeChild(ul.children[0]);//点击按钮删除ul中第一个子节点
    }
</script>

复制(克隆)节点

node.cloneNode() 方法返回调用该方法的节点的一个副本,也称为克隆节点/拷贝节点。
注意:
1.如果括号参数为或者false,则是浅拷贝,即只复制节点本身,不复制里面的子节点。
2.如果括号参数为true,则是深度拷贝,会复制节点本身以及里面所有的子节点。

浅拷贝:

<button>拷贝</button>
<ul>
    <li>111</li>
    <li>222</li>
</ul>
<script>
    var ul = document.querySelector('ul');//获取父级
    var btn = document.querySelector('button');
    btn.onclick = function(){
        li = ul.children[0].cloneNode();//浅拷贝ul中第一个子节点
        ul.appendChild(li);
    }
</script>

深度拷贝:

li = ul.children[0].cloneNode(true)//

版权声明:本文为zjhahaha123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。