在浏览器中,我们一旦把节点添加到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中添加大量数据时(比如1w条),如果像上面的代码一样,逐条添加节点,这个过程就可能会十分缓慢。
为了解决这个问题,我们可以引入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中
经过测试,在ie,firefox下性能明显得以提高。大家可以自己测试下。
前端性能优化都是从一些细节地方做起的,如果不加以注意,后果很严重。
PS:这个优化跟循环添加html代码有点类似。
相关推荐:
serv_U 域离线 解决方法
百度用到的Js日历 大家可以看看
FCKEditor网页编辑器 几点使用心得
JavaScript 组件之旅(二)编码实现和算法
ASP程序与SQL存储过程结合使用详解
SQLSERVER中union,cube,rollup,cumpute运算符使用说明
javascript 读取XML数据,在页面中展现、编辑、保存的实现
在js中单选框和复选框获取值的方式
让你的网站可编辑的实现js代码
asp.net下获取浏览器类型的实现代码
Jquery在IE7下无法使用 $.ajax解决方法
js 验证 常用正则表达式集锦
提示“处理URL时服务器出错”和“HTTP 500错误“的解决方法
网页游戏开发入门教程三(简单程序应用)
MSSQL 删除数据库里某个用户所有表里的数据
CSS 直方图布局示例
Mootools 1.2教程(21)——类(二)
javascript window对象属性整理
sql 服务器知识
Ha0k 0.3 PHP 网页木马修改版
php面向对象全攻略 (十七) 自动加载类
实现按关健字模糊查询,并按匹配度排序的SQL语句
JS OOP包机制,类创建的方法定义
php self,$this,const,static,-&gt;的使用
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
asp 通用修改和增加函数代码
windows 复制隐藏帐号完全批处理
按键盘方向键翻页跳转的javascript代码(支持ie,firefox)
Jquery作者John Resig自己封装的javascript 常用函数
SQL 多表连接查询实现语句
JavaScript 监听textarea中按键事件
jquery text()要注意啦
PHP webshell检查工具 python实现代码
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
javascript currying返回函数的函数
配置IIS服务器 支持sis下载等
Js 打字效果 逐一出现的文字
将jQuery应用于login页面的问题及解决
一个JS小玩意 几个属性相加不能超过一个特定值.
ASP 使用三层架构 asp中使用类
var与Javascript变量隐式声明
javascript获得CheckBoxList选中的数量
asp.net服务器上几种常见异常的解决方案.
ASP 高级模板引擎实现类
asp.net 页面间传值方法小结
通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据
javascript 设置文本框中焦点的位置
extjs 学习笔记(一) 一些基础知识
图片与文字半透明效果 鼠标移上不透明
php程序之die调试法 快速解决错误