创建dom 碎片容器 操作的dom的性能 复制删除替换元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="div0">
        <div>123123</div>
    </div>
    <!-- <ul></ul> -->
    <script>
        // 创建内容
        // appendchild 追加尾部
        // insertbefore 插入什么的前面

        // 插入到第一个字节点 第一个子元素还不够前面 
        // 一般来说 第一个子元素前面还有很多子节点 
        //  或者说没有第一个子元素 也就是html标签 但是一般会有子节点了
        // var div = document.createElement("div");
        // document.body.appendChild(div);
        // div.textContent = "qweqwe"
        // var span = document.createElement("span");
        // span.textContent = "asdasd"
        // span.style.color = "green"
        // console.log( div.childNodes )
        // console.log( div.children )
        // div.insertBefore(span,div.firstChild)//插入到第一个子节点之前 肯定能插入到最前面
        // var p = document.createElement("p")
        // p.textContent = "p标签"
        // div.insertBefore( p, div.firstElementChild)//现在有标签子元素了 所以就可以插入前面了

        // 将一个元素插入到div0的前面
        //  var span = document.createElement("span"); // 这是创建元素节点
        // span.textContent = "asdasd"
        // div0.parentElement.insertBefore(span,div0)//获取div0的父容器 插入父容器内部元素之前
         // 将一个元素插入到div0的后面
        //  div0.parentElement.insertBefore(span,div0.nextElementSibling)//获取div0的父容器 插入父容器内部元素之后的兄弟元素之前;

        // var div0 = document.getElementById("div0")
        // // 创建文本节点 是一个文本节点对象
        // var txt = document.createTextNode("好滚滚滚")
        // div0.insertBefore(txt,div0.firstElementChild)

        var ul = document.createElement("ul")
        for( var i=0;i<50;i++ ){
            var li = document.createElement('li')
            li.textContent = i
            ul.appendChild(li)//没有在界面上 都在内存中 在页面上还没有创建好
            // 在页面上创建好的就不可以了
        }
        document.body.appendChild(ul)//最后插入进去 就进行一次dom操作

        // dom元素 是由 css树  和  dom树 组成的
        // 合成了一支渲染树 render tree
        // dom树 css树 合成了一支 渲染树
        // 太消耗性能

        // 需求 在body中创建50个div body已经存在 如何创建?
        // 可以创建一个碎片容器 进行包裹 类似于template 一个模板 在页面中就不见了?
        // 碎片会消失 
        var parent = document.createDocumentFragment()//创建一个碎片容器
        for(var i = 0;i<50;i++){
            var div = document.createElement("div")
            parent.appendChild(div)
        }
        document.body.appendChild(parent)
     </script>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="div0"></div>
    <script>
        var div = document.createElement("div")
        div.textContent = "123"
        var div0 = document.getElementById('div0')
        document.body.appendChild(div)
        // 复制元素
        // var div1 = div.cloneNode(false)//深度复制 浅复制 不复制内部的内容
        var div1 = div.cloneNode(true)//深度复制 深复制 复制内部的内容
        div0.appendChild(div1)
        
        // 删除元素
        // div0.remove() //自己删除自己 只是从dom树上消失 还在内存中
        // document.body.removeChild(div0)//父容器删除子元素
        
        // 删除所有元素
        // document.body.innerHTML = ""

        // document.body.appendChild(div0)

        // div0 = null; // 这样才算完全消失 销毁对象 在内存中销毁

        var div2 = document.createElement("div")
        div2.textContent = "didididiv2"
        // 还有最后一个替换元素 replaceChild(新的元素, 要被替换的元素)
        document.body.replaceChild(div2,div);
    </script>
</body>
</html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值