javascript

位置:IT落伍者 >> javascript >> 浏览文章

浅析document.createDocumentFragment()与js效率


发布日期:2022年03月30日
 
浅析document.createDocumentFragment()与js效率
对于循环批量操作页面的DOM有很大帮助!利用文档碎片处理然后一次性append并且使用原生的javascript语句操作

documentcreateDocumentFragment()说白了就是为了节约使用DOM每次JavaScript对DOM的操作都会 改变页面的变现并重新刷新整个页面从而消耗了大量的时间为解决这个问题可以创建一个文档碎片把所有的新节点附加其上然后把文档碎片的内容一次 性添加到document中
这是我写的一个简单的测试页面

复制代码 代码如下:
<!DOCTYPE html PUBLIC "//WC//DTD XHTML Transitional//EN" "
<html xmlns="
<head>
<meta httpequiv="ContentType" content="text/html; charset=gb" />
<title>documentcreateDocumentFragment()测试页面</title>
</head>
<body>
<script type="text/javascript">
var d = new Date();
for(var i=;i<;i++)
{
var op=documentcreateElement("P");
var oText=documentcreateTextNode("test");
opappendChild(oText);
documentbodyappendChild(op);
}
var d = new Date();
documentwrite("方法一用时" + (dgetTime() dgetTime()) + "<br/>");
//+
var d = new Date();
var oFrag=documentcreateDocumentFragment();
for(var i=;i<;i++)
{
var op=documentcreateElement("P");
var oText=documentcreateTextNode("test");
opappendChild(oText);
oFragappendChild(op);
}
documentbodyappendChild(oFrag);
//这段代码中
var d = new Date();
documentwrite("方法二用时" + (dgetTime() dgetTime()) + "<br/>");
</script>
</body>
</html>


一 旦把节点添加到documentbody(或其后的节点)中页面就会立即反映出这个变化对于第一小段程序运行是没有任何问题的但问题是它调用了 十次documentbodyappendChild()每次要产生一次页面刷新这样会产生很多页面碎片而第二小段代 码documentbodyappendChild()仅调用了一次这意味着只需要进行一次页面的刷新需要的时间显然会比前面的要少
我用了三种浏览器测试上面的测试代码大致得出的结果为
IE
方法一用时
方法二用时
Firefox
方法一用时
方法二用时
Chrome
方法一用时
方法二用时
得出的结果还是和理论上的一致了

上一篇:js 有框架页面跳转

下一篇:页面右下角弹出提示框示例代码js版