国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

淺析document.createDocumentFragment()與js效率

2019-11-20 22:33:28
字體:
供稿:網(wǎng)友

document.createDocumentFragment()說白了就是為了節(jié)約使用DOM。每次JavaScript對(duì)DOM的操作都會(huì)改變頁面的變現(xiàn),并重新刷新整個(gè)頁面,從而消耗了大量的時(shí)間。為解決這個(gè)問題,可以創(chuàng)建一個(gè)文檔碎片,把所有的新節(jié)點(diǎn)附加其上,然后把文檔碎片的內(nèi)容一次性添加到document中。
這是我寫的一個(gè)簡(jiǎn)單的測(cè)試頁面:

復(fù)制代碼 代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>document.createDocumentFragment()測(cè)試頁面</title>
</head>
<body>
<script type="text/javascript">
       var d1 = new Date();
       for(var i=0;i<1000;i++)
       {
              var op=document.createElement("P");
              var oText=document.createTextNode("test1");
              op.appendChild(oText);
              document.body.appendChild(op);
       }
       var d2 = new Date();
       document.write("方法一用時(shí):" + (d2.getTime() - d1.getTime()) + "<br/>");
       //---+-----
       var d3 = new Date();
       var oFrag=document.createDocumentFragment();
       for(var i=0;i<1000;i++)
       {
              var op=document.createElement("P");
              var oText=document.createTextNode("test2");
              op.appendChild(oText);
              oFrag.appendChild(op);
       }
       document.body.appendChild(oFrag);
       //這段代碼中
       var d4 = new Date();
       document.write("方法二用時(shí):" + (d4.getTime() - d3.getTime()) + "<br/>");
</script>
</body>
</html>

一旦把節(jié)點(diǎn)添加到document.body(或其后的節(jié)點(diǎn))中,頁面就會(huì)立即反映出這個(gè)變化。對(duì)于第一小段程序,運(yùn)行是沒有任何問題的,但問題是它調(diào)用了十次document.body.appendChild(),每次要產(chǎn)生一次頁面刷新,這樣會(huì)產(chǎn)生很多頁面碎片。而第二小段代碼,document.body.appendChild()僅調(diào)用了一次,這意味著只需要進(jìn)行一次頁面的刷新,需要的時(shí)間顯然會(huì)比前面的要少。
我用了三種瀏覽器測(cè)試上面的測(cè)試代碼,大致得出的結(jié)果為:
IE7:
       方法一用時(shí):140
       方法二用時(shí):125
Firefox:
       方法一用時(shí):66
       方法二用時(shí):43
Chrome:
       方法一用時(shí):35
       方法二用時(shí):25
得出的結(jié)果還是和理論上的一致了。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 济阳县| 灵台县| 溧阳市| 武安市| 东乡| 娄底市| 恩平市| 盱眙县| 弥勒县| 安新县| 莆田市| 宁国市| 阿拉善左旗| 霍邱县| 白城市| 涡阳县| 剑河县| 湘潭县| 来安县| 新源县| 绩溪县| 台前县| 思茅市| 台东县| 乌拉特前旗| 海淀区| 资溪县| 盘锦市| 介休市| 常熟市| 五寨县| 离岛区| 民丰县| 安泽县| 南丹县| 丰宁| 盐池县| 巴林左旗| 唐河县| 宿松县| 衡水市|