减少访问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 相关文章推荐
SyntaxHighlighter代码加色使用方法
Sep 07 Javascript
php+js实现倒计时功能
Jun 02 Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 Javascript
Javascript常用字符串判断函数代码分享
Dec 08 Javascript
JavaScript给url网址进行encode编码的方法
Mar 18 Javascript
老生常谈js中0到底是 true 还是 false
Mar 08 Javascript
jquery学习笔记之无new构建详解
Dec 07 jQuery
LayUi数据表格自定义赋值方式
Oct 26 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
js+css实现全屏侧边栏
Jun 16 Javascript
Vue如何实现监听组件原生事件
Jul 03 Javascript
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
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
APMServ使用说明
2006/10/23 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
javascript cookies操作集合
2010/04/12 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
python中安装模块包版本冲突问题的解决
2017/05/02 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
Python操作Excel的学习笔记
2021/02/18 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
励志演讲稿3分钟
2014/08/21 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
北京故宫导游词
2015/01/31 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL