文档碎片

本文介绍了一种使用文档碎片优化DOM批量添加的方法,通过创建文档碎片并在其上构建多个DOM元素,最后一次性添加到DOM树中,减少了页面刷新次数,提高了效率。

通过JS操作DOM节点可能以节点为单位进行,比如添加节点,可以createElement,createTextNode,然后用appendChild把文本节点和容器节点绑定在一起,然后再用appendChild或insertBefor添加到DOM树中.但如果要往DOM树中动态添加大量的节点.就会很麻烦.

例如:

var arrText = ["one","two","three","four","five","six","seven","eight","nine","ten"];

for(var i = 0;i<arrText.length;i++){

    var oP = document.createElement("p");

    ////var oText = document.createTextNode(arrText[i]);

    /////oP.appendChild(oText);

    oP.innerHTML = arrText[i]; 

    document.body.appendChild(oP);

}

这段代码调用了十次document.body.appendChild(),每次都要产生一次页面刷新.很麻烦.所以可以用"文档碎片":

var arrText = ["one","two","three","four","five","six","seven","eight","nine","ten"];

var oFragment = document.createDocumentFragment();

for(var i = 0;i<arrText.length;i++){

    var oP = document.createElement("p");

    ////var oText = document.createTextNode(arrText[i]);

   /////oP.appendChild(oText);

    oP.innerHTML = arrText[i];    

    oFragment.appendChild(oP);

}

document.body.appendChild(oFragment);

 

当然,你也可以建个新的节点,比如说div,先将oP添加到div上,然后再将div添加到body中.但这样要在body中多添加一个<div></div>.但文档碎片不会产生这种节点.

 

创建文本碎片:var oFrag=document.createDocumentFragment();
给碎片添加内容:
var op=document.createElement("div");
var oText=document.createTextNode("碎片");
op.appendChild(oText);
oFrag.appendChild(op);
将碎片绑定到DOM中:document.body.appendChild(oFrag);//当然也可以不直接给body绑定,也可以给其他的节点;

好象IE对文档碎片的支持不怎么样.如果显示不出来可以这样:先获得碎片的内容:oFrag.innerHTML,然后再将内容赋给要绑定碎片的对象.

注意:绑定碎片实际上是把碎片的内容附加到被绑定节点下面.并不会产生类似<fragment></fragement>的节点;

 

转自:http://blog.163.com/wangxiaoxia1221@126/blog/static/1076801742011911101153576/

转载于:https://www.cnblogs.com/kendyjack/archive/2012/11/20/2778634.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值