修改和创建DOM节点两种方式的4种优化方案

香河魅少

香河魅少

2016-02-20 01:04

今天给大家分享的是由图老师小编精心为您推荐的修改和创建DOM节点两种方式的4种优化方案,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

原文:《Speeding up JavaScript: Working with the DOM》
作者:KeeKim Heng, Google Web Developer
翻译:http://www.blogjava.net/emu/archive/2010/03/01/314185.html

在我们开发互联网富应用(RIA)时,我们经常写一些javascript脚本来修改或者增加页面元素,这些工作最终是DOM或者说文档对象模 型来完成的,而我们的实现方式会影响到应用的响应速度。

DOM操作会导致浏览器重解析(reflow),这是浏览器的一个决定页面元素如何展现的计算过程。直接修改DOM,修改元素的CSS样式,修改浏 览器的窗口大小,都会触发重解析。读取元素的布局属性比如offsetHeithe或者offsetWidth也会触发重解析。重解析需要花费计算时间, 因此重解析触发的越少,应用就会越快。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

DOM操作通常要不就是修改已经存在的页面上的元素,要不就是创建新的页面元素。下面的4种优化方案覆盖了修改和创建DOM节点两种方式,帮助你减 少触发浏览器重解析的次数。

方案一:通过CSS类名切换来修改DOM

这个方案让我们可以一次性修改一个元素和它的子元素的多个样式属性而只触发一次重解析。

需求:

emu注:原文作者写到这里的时候脑子显然短路了一下,把后面的Out-of-the-flow DOM Manipulation模式要解决的问题给摆到这里来了,不过从示范代码中很容易明白作者真正想描述的问题,因此emu就不照翻原文了)

我们现在需要写一个函数来修改一个超链接的几个样式规则。要实现很简单,把这几个规则对应的属性逐一改了就好了。但是带来的问题是,每修改一个样式 属性,都会导致一次页面的重解析。

function selectAnchor(element) {
  element.style.fontWeight = 'bold';
  element.style.textDecoration = 'none';
  element.style.color = '#000';
}

解决方案:

要解决这个问题,我们可以先创建一个样式名,并且把要修改的样式规则都放到这个类名上,然后我们给超链接添加上这个新类名,就可以实现添加几个样式 规则而只触发一次重解析了。这个模式还有个好处是也实现了表现和逻辑相分离。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

.selectedAnchor {
  font-weight: bold;
  text-decoration: none;
  color: #000;
}

function selectAnchor(element) {
  element.className = 'selectedAnchor';
}

展开更多 50%)
分享

猜你喜欢

修改和创建DOM节点两种方式的4种优化方案

Web开发
修改和创建DOM节点两种方式的4种优化方案

CSS两种方式link和@import

Web开发
CSS两种方式link和@import

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MySQL中两种快速创建空表的方式的区别

编程语言 网络编程
MySQL中两种快速创建空表的方式的区别

音乐胎教的主要方式有两种

胎教
音乐胎教的主要方式有两种

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VB中文件操作的两种方式

编程语言 网络编程
VB中文件操作的两种方式

《刺客信条2》两种暗杀方式

电脑网络
《刺客信条2》两种暗杀方式

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Excel2010中批量合并单元格不规则区域

Excel2010中批量合并单元格不规则区域

Excel中数字如何自动转换成中文大写数字

Excel中数字如何自动转换成中文大写数字
下拉加载更多内容 ↓