Dom动态添加删除元素

创建元素

var oLi = document.createElement("li");

createElement的参数是我们要创建的元素标签的名字。

添加元素

在尾部插入元素

oUl.appendChild(oLi);

父标签.appendChild(子标签);

在指定位置插入元素

oUl.insertBefore(oLi, aLi[1]);

insertBefore有两个参数,第一个参数是我们要插入的元素,第二个参数是插入的位置,这里是插入在第一个元素之后,第二个元素之前,

删除元素

var oLi = aLi[aLi.length - 1];
oUl.removeChild(oLi);

父元素.removeChild(子元素)。很简单!

使用documentFragment来一次性添加多个子元素

documenFragment,有的地方也叫作’文档碎片’,他的作用减少页面不停重绘,不停渲染页面的过程。简单点说,就是将要添加的一组元素先放在documentFragment中,再将documentFragment添加到父控件中,这样整个页面只需要绘制渲染一次就行了。其实这种做法在ie8以前的版本上表现的比较明显,在ie9以及chrome和firefox上已经没有什么效果了,甚至降低性能,现在已经基本不使用了。具体使用:

var oDocumentFeagment = document.createDocumentFragment();//创建documenFragment
...
//添加文档碎片
for(var i = 0; i < 10; i++) {
        var oLi = document.createElement("li");
        oLi.innerHTML = (aLi.length + i) + "--" + (aLi.length + i);
        oDocumentFeagment.appendChild(oLi);
    }
oUl.appendChild(oDocumentFeagment);

这样就是将10个li一次性的添加到了ul中。

这里有一个简单例子:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>Dom基本应用</title>
        <script type="text/javascript">
            window.onload = function() {
                var aInput = document.getElementsByClassName("option");
                var ahaha = document.getElementsByName("haha");
                var oUl = document.getElementById("ul");
                var aLi = oUl.getElementsByTagName("li");
                var oTextInput = document.getElementById("text");
                var oDocumentFeagment = document.createDocumentFragment();
                //              alert(ahaha.length);
                aInput[0].onclick = function() {
                    var oLi = document.createElement("li");
                    oLi.innerHTML = oTextInput.value;
                    oUl.appendChild(oLi);
                }
                aInput[1].onclick = function() {
                    var oLi = document.createElement("li");
                    oLi.innerHTML = oTextInput.value;
                    if(aLi.length > 0) {
                        oUl.insertBefore(oLi, aLi[1]);
                    } else {
                        oUl.appendChild(oLi);
                    }
                }
                aInput[2].onclick = function() {
                    var oLi = aLi[0];
                    oUl.removeChild(oLi);
                }
                aInput[3].onclick = function() {
                    var oLi = aLi[aLi.length - 1];
                    oUl.removeChild(oLi);
                }
                aInput[4].onclick = function() {
                    //添加文档碎片
                    for(var i = 0; i < 10; i++) {
                        var oLi = document.createElement("li");
                        oLi.innerHTML = (aLi.length + i) + "--" + (aLi.length + i);
                        oDocumentFeagment.appendChild(oLi);
                    }
                    oUl.appendChild(oDocumentFeagment);
                }
            }
        </script>
    </head>

    <body>
        <div>
            <input type="text" id="text" />
        </div>
        <input type="button" value="添加li" class="option" name="haha" />
        <input type="button" value="头部添加li" class="option" />
        <input type="button" value="头部删除li" class="option" />
        <input type="button" value="尾部删除li" class="option" />
        <input type="button" value="一次性添加10个子元素" class="option" />
        <ul id="ul"></ul>
    </body>

</html>

界面效果:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值