`

JavaScript性能优化--创建文档碎片createDocumentFragment

阅读更多

《javascript高级程序设计》第六章DOM基础突然看到文档片段,解决很有用分享一下:

在浏览器中,我们一旦把节点添加到document.body(或者后代节点)中,页面就会更新并反映出这个变化,对于少量的更新,这是很好的,也是我们常用的方法。代码如下:
 

for(var i=0;i<5;i++){
  var op = document.createElement("span");
  var oText = document.createTextNode(i);
  op.appendChild(oText);
  document.body.appendChild(op);
 }
 

但是,如果当我们要向document中添加大量数据时,每次都要产生一次页面刷新,这个时候文档片段就非常有用。

createDocumentFragment()方法,它的作用是创建一个文档碎片,把要插入的新节点先附加在它上面,然后再一次性添加到document中,这就意味着一次屏幕刷新。代码如下:

 var oFragmeng = document.createDocumentFragment();  //先创建文档碎片
 for(var i=0;i<10000;i++){
  var op = document.createElement("span");
  var oText = document.createTextNode(i);
  op.appendChild(oText);
  oFragmeng.appendChild(op); //先附加在文档碎片中
 }
 document.body.appendChild(oFragmeng);//最后一次性添加到document中

 

大家可以自己测试下。前端性能优化从一些细节地方做起的。

2
0
分享到:
评论

相关推荐

    JavaScript性能优化 创建文档碎片(document.createDocumentFragment)

    讲这个方法之前,我们应该先了解下插入节点时浏览器会做什么。

    初识javascript 文档碎片

    后来是一技术群问到以下一段代码: 代码... var df = document.createDocumentFragment(); while (d.firstChild) df.appendChild(d.firstChild); return df; } 大概的原理都明白,比较困惑的是为什么要用 document.cre

    关于javascript document.createDocumentFragment()

    他支持以下DOM2方法: appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, normalize, removeChild, replaceChild. 也支持以下DOM2屬性: attributes, childNodes, firstChild, lastChild, local...

    浅析document.createDocumentFragment()与js效率

    为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中。这是我写的一个简单的测试页面: 代码如下:&lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 ...

    blog::writing_hand:qize的博客

    初识createDocumentFragment Promise原理与实现探究的一种思路 Tip Content-Security-Policy的理解 初识createDocumentFragment Vue2的独立构建与运行时构建的差别 JavaScript的异步性和队列问题 CommonJS模块化规范...

    createElement与createDocumentFragment的点点区别小结

    网上可以搜到的大部分都是说使用createDocumentFragment主要是因为避免因createElement多次添加到document.body引起的效率问题,比如: 代码如下: var arrText=[“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”...

    JavaScript权威指南

    Compatibility with Non-JavaScript Browsers Chapter 21. JavaScript Security Section 21.1. JavaScript and Security Section 21.2. Restricted Features Section 21.3. The Same-Origin Policy ...

    JavaScript节点及列表操作实例小结

    createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点 (2)添加、移除、替换、插入 appendChild() removeChild() replaceChild() ...

    编译的 HTML 帮助文件 (.chm) DHTML手册

    createDocumentFragment 创建一个新文档。 createElement 为指定标签创建一个元素的实例。 createEventObject 生成当使用 fireEvent 方法时用于传递事件相关信息的 event 对象。 createStyleSheet 为文档创建样式...

    javascript 异步的innerHTML使用分析

    代码如下: function asyncInnerHTML(HTML, callback) { var temp = document.createElement(‘div’), frag = document.createDocumentFragment(); temp[removed] = HTML;//要加入的内容先放到这里。 (function(){ ...

    JavaScript Table行定位效果

    一开始的需求只是表头部分在滚动时能一直固定在头部,那关键要实现的就是让tr能定位。 首先想到的方法是给tr设置relative,用ie6/7测试以下代码: Code &lt;!... ...给tr设置relative后就能相对table定位了,看来很简单啊...

    dom-lite:一个小的DOM实现,其中实现了文档中的大多数DOM属性和方法

    一个小的DOM实现,其中实现了文档中的大多数DOM属性和方法。 例子 var document = require ( "dom-lite" ) . document ; var el = document . createElement ( "h1" ) ; el . id = 123 ; el . className = "large" ...

    解析js原生方法创建表格效率测试

    对于创建表格本文提到的算法共有3种,分别是直接操作dom、借助createDocumentFragment、借助js的原生表格操作方法

    mui选项卡切换和下拉刷新加载数据列表代码.zip

    var fragment = document.createDocumentFragment(); var li; for (var i = 0; i ; i ) { li = document.createElement('li'); li.className = 'mui-table-view-cell'; li[removed] = '第' (index 1) '个选项...

    PixelArtMaker

    PixelArtMaker 开发一个单页Web应用程序,使用户可以... PS:document.createDocumentFragment()可用于有效创建表。 这将防止在每次添加td或tr时对文档进行重排和重绘。 文档片段在内存中,而不是主dom树的一部分。

    javascript 变态的节点集合

    节点集合 by 司徒正美 #aaa { padding:10px; border:1px solid red;... 代码如下: [removed] = function(){ var d = document.createDocumentFragment(); var div = document.getElementById(“aaa”); var c

Global site tag (gtag.js) - Google Analytics