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

2016-02-20 01:04 6 1 收藏

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

【 tulaoshi.com - Web开发 】

原文:《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://www.tulaoshi.com/webkaifa/)

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

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

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

需求:

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

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

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

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

解决方案:

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

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

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

来源:http://www.tulaoshi.com/n/20160220/1633197.html

延伸阅读
标签: Web开发
1、javascript ,设置一个变量,只允许提交一次。 script language="javascript"     var checkSubmitFlg = false;     function checkSubmit() {       if (checkSubmitFlg == true)    {          return false;  &nbs...
标签: Web开发
 目前内容管理系统,展现给客户端具体数据的方式主要是:XML+XSL  或者 Html 两种方式。以CSDN为例,目前这两种方式都存在。比如:论坛,我们用的是XML+XSL 方式,文档中心我们用的是SHTML 方式。         根据我的使用心得。XML+XSL 的方式,优点在于:数据层跟展现分开了。XML定义数据,X...
剖腹产经验分享 图钉问: 大家都清楚分娩方式有两种:顺产和剖宫产,这两种分娩方式其产后护理内容有什么不同吗? 图老师答: 其实对于产后的恢复,要求都是一样的,只是自然分娩的过程,子宫经过产时收缩的训练,产后恢复的会更快,剖宫产没有这个过程,所以子宫复旧的速度相对较慢。另外,顺产经过短暂的超强体力劳动,经过几...
标签: PHP
      在网页制作过程中怎样在不刷新页面的情况下使前台页面和 后台CGI页面保持交互一直是个问题。这里介绍两个我在实践中使 用的方法。     方法一:通过Cookie交互。一共是三个文件,分别为: index.htm,action.php,main.htm       原理为前台页面main.ht...
标签: 营养价值
椰子在热带是很常见的一种水果,对于我们北方人应该很少吃椰子,椰子是有很多营养的,它含有很高的碳水化合物和蛋白质,能够对我们的身体起到很好的滋补作用,特别是夏天吃椰子也能够很好的止渴,可是椰子怎么吃,我们应该了解的不多,即使买了椰子也不知道该怎么吃。 在南方椰子是很常见的,他们对于椰子的吃法会更了解,但是对于北...

经验教程

261

收藏

99
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部