减少访问DOM的次数提升javascript性能


Posted in Javascript onFebruary 24, 2014

访问DOM元素是有代价的,修改DOM元素则更为昂贵,因为它会导致浏览器重新计算页面的几何变化。

当然,最坏的情况是在循环中访问修改元素,尤其是对HTML元素集合循环操作。

例如:

<!-- 优化前 --> 
<script type="text/javascript"> 
function innerHTMLLoop () { 
for(var count = 0; count < 15000; count++){ 
document.getElementById('here').innerHTML+='a'; 
} 
} 
</script>

这个函数循环修改页面元素的内容。这段代码的问题在于,每次循环迭代,该元素都被访问两次:一次读取innerHTML属性,另外一次重写它。

一个效率更高的做法是使用局部变量存储更新后的内容,然后在循环结束后一次性写入:

<!-- 优化后 --> 
<script type="text/javascript"> 
function innerHTMLLoop () { 
var content = ''; 
for(var count = 0; count < 15000; count++){ 
content+='a'; 
} 
document.getElementById('here').innerHTML+=content; 
} 
</script>

访问DOM的次数越多,代码运行速度越慢。因此,在有其他方案可以代替的时候,我们要尽量减少访问DOM的次数。
Javascript 相关文章推荐
jQuery下的几个你可能没用过的功能
Aug 29 Javascript
javascript处理table表格的代码
Dec 06 Javascript
javascript运行机制之this详细介绍
Feb 07 Javascript
javascript从image转换为base64位编码的String
Jul 29 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
基于JavaScript实现树形下拉框
Aug 10 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
Oct 11 Javascript
jQuery图片轮播功能实例代码
Jan 29 Javascript
vue项目使用微信公众号支付总结及遇到的坑
Oct 23 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
webpack4.x下babel的安装、配置及使用详解
Mar 07 Javascript
js实现录音上传功能
Nov 22 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 #Javascript
JavaScript 实现鼠标拖动元素实例代码
Feb 24 #Javascript
对table和ul实现js分页示例分享
Feb 24 #Javascript
jquery.post用法之type设置问题
Feb 24 #Javascript
jQuery获得IE版本不准确webbrowser的解决方法
Feb 23 #Javascript
js获得页面的高度和宽度的方法
Feb 23 #Javascript
使用js判断当前时区TimeZone是否是夏令时
Feb 23 #Javascript
You might like
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
详解python实现线程安全的单例模式
2018/03/05 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
python Kmeans算法原理深入解析
2019/08/23 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
Python安装whl文件过程图解
2020/02/18 Python
python中tab键是什么意思
2020/06/18 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
建筑安全员岗位职责
2014/03/13 职场文书
车间主任岗位职责
2014/03/16 职场文书
高校教师岗位职责
2014/03/18 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
初中语文教师研修日志
2015/11/13 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL