createDocumentFragment有什么作用呢?

调用多次document.body.append(),每次都要刷新页面一次。效率也就大打折扣了,而使用document_createDocumentFragment()创建一个文档碎片,把所有的新结点附加在其上,然后把文档碎片的内容一次性添加到document中,这也就只需要一次页面刷新就可。

他支持以下DOM2方法: 
a, cloneNode, hasAttributes, hasChildNodes, insertBefore, normalize, removeChild, replaceChild. 
也支持以下DOM2属性: 
attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling, textContent.

下面是2段测试程序:

var d1 = new Date();

//创建十个段落,常规的方式

for(var i = 0 ; i < 1000; i ++) {

var p = document_createElement_x_x_x("p");

var oTxt = document_createTextNode("段落" + i);

p.a(oTxt);

document.body.a(p);

}

var d2 = new Date();

document.write("第一次创建需要的时间:"+(d2.getTime()-d1.getTime()));

//使用了createDocumentFragment()的程序

var d3 = new Date();

var pFragment = document_createDocumentFragment();

for(var i = 0 ; i < 1000; i ++) {

var p = document_createElement_x_x_x("p");

var oTxt = document_createTextNode("段落" + i);

p.a(oTxt);

pFragment.a(p);

}

document.body.a(pFragment);

var d4 = new Date();

document.write("第2次创建需要的时间:"+(d4.getTime()-d3.getTime()));

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

本文摘自《莫尘的博客》,链接地址:http://blog.sina.com.cn/s/blog_667a8c2f010113zw.html

最新文章

  1. MVC API 权限控制
  2. forEach 方法 (Array) (JavaScript)
  3. MVC(一)
  4. redis3.0 集群实战2 - 集群功能实战
  5. 一个spring jdbc实例
  6. zabbix监控mysql主从
  7. PL/SQL显示行号和高亮当前行
  8. Python-memcached的基本使用
  9. JavaScript知识思维导图
  10. CentOS远程系统管理之VNC
  11. redis安装及数据类型简介(string、list、set、sorted_set、hash)
  12. js记录重复字母的个数
  13. 【转】nginx配置:location配置方法及实例详解
  14. 企业微信开发之向员工付款(C#)
  15. JAVA基础-----Maven项目的搭建
  16. 整合 MyPerf4J 做Java性能监控和统计工具
  17. Spring Cloud微服务实践之路- Eureka Server 中的第一个异常
  18. java生成/解析二维码
  19. from jobscrawler_qianchengwuyou.items import JobscrawlerQianchengwuyouItem
  20. No compatible targets were found Do you wish to a add new Android Virtual Device ?

热门文章

  1. asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密。
  2. C#冒泡排序法学习
  3. vue实现全选反选--简单使用
  4. go语言从例子开始之Example25.通道方向
  5. http请求访问响应慢问题解决的基本思路
  6. 斯特林数&amp;斯特林反演
  7. css强制换行和超出部分隐藏实现
  8. 【leetcode】937. Reorder Log Files
  9. qt 学习(六) 数据库注册用户
  10. sql 基础语法3:分组,聚合函数,having,联合查询,快速备份,内联函数