• DocumentFragment对象


    一般动态创建html元素都是创建好了直接appendChild()上去,但是如果要添加大量的元素还用这个方法的话就会导致大量的重绘以及回流,所以需要一个'缓存区'来保存创建的节点,然后再一次性添加到父节点中。这时候DocumentFragment对象就派上用场了。

    看下w3c的官方说明:

    DocumentFragment 节点不属于文档树,继承的 parentNode 属性总是 null。

    不过它有一种特殊的行为,该行为使得它非常有用,即当请求把一个 DocumentFragment 节点插入文档树时,插入的不是 DocumentFragment 自身,而是它的所有子孙节点。这使得 DocumentFragment 成了有用的占位符,暂时存放那些一次插入文档的节点。它还有利于实现文档的剪切、复制和粘贴操作。

    重点就在于DocumentFragment 节点不属于文档树。因此当把创建的节点添加到该对象时,并不会导致页面的回流,因此性能就自然上去了。

    创建该对象也简单:

    var fragment = document.createDocumentFragment();

    看下实例:

    <script type="text/javascript">
        var pNode,fragment = document.createDocumentFragment();
            
        for(var i=0; i<20; i++){
            pNode = document.createElement('p');
            pNode.innerHTML = i;
            fragment.appendChild(pNode);
        }
        document.body.appendChild(fragment);
        
    </script>
  • 相关阅读:
    thinkphp 事物回滚
    文字超出部分以省略号隐藏
    js倒计时
    js 日期转为时间戳
    jquery 获取url地址参数
    spreadjs 自定义菜单事件
    spreadjs 点击事件
    spreadjs 自定义上传文件单元格
    spreadjs 小记
    Json数组排序
  • 原文地址:https://www.cnblogs.com/ziyoublog/p/9989075.html
Copyright © 2020-2023  润新知