js文档碎片---DocumentFragment

来源:互联网 发布:辐射4捏脸数据放哪 编辑:程序博客网 时间:2024/05/21 15:04

当我们操作html节点时候,很多情况是需要大量添加DOM元素,如果是不断地使用appendChild插入子节点方式,性能会大打折扣。所以我们应该使用文档碎片,一种轻量级文档处理方式,但是并没有所谓的文档碎片标签。

文档碎片可以当作仓库,缓存使用。

看例子代码:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>DocumentFragment文档碎片</title></head><body>    <div id="test"></div>    <div id="test2"></div>    <script>        function a1() {        var time1 =( +new Date());        for (var i = 0; i < 5000; i++) {            var op = document.createElement("span");            var oText = document.createTextNode(i);            op.appendChild(oText);            document.body.appendChild(op);        }        document.getElementById('test').innerHTML = '<br><div>普通方式创建耗时'+ ( +new Date() - time1);    }    function a2() {        var oFragmeng = document.createDocumentFragment(); //创建文档碎片        var time2 =( +new Date());        for (var i = 0; i < 5000; i++) {            var op = document.createElement("span");            var oText = document.createTextNode(i);            op.appendChild(oText);            oFragmeng.appendChild(op);        }        document.body.appendChild(oFragmeng); //最后一次性添加到document中        document.getElementById('test2').innerHTML = '<br><div>文档碎片创建耗时'+ ( +new Date() - time2);    }    a1();    a2();    </script></body></html>

上面例子,性能区别可以忽略,也许是文档碎片需要繁重大量的DOM操作优势才能体现吧!?文档碎片能够加快dom元素操作,当然也可以使用一个div标签,将所有元素添加到div上面,再添加到目标节点上,性能差不多。所以是否需要使用文档碎片,看实际情况吧。


参考链接:http://www.cnblogs.com/sxhlf/p/7027208.html