最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript性能優(yōu)化之DOM交互操作實例分析

 更新時間:2015年12月12日 16:19:27   作者:挨踢前端  
這篇文章主要介紹了javascript性能優(yōu)化之DOM交互操作技巧,結(jié)合實例形式總結(jié)分析了JavaScript針對DOM操作過程中的各種常見優(yōu)化操作技巧,需要的朋友可以參考下

本文實例講述了javascript性能優(yōu)化之DOM交互操作技巧。分享給大家供大家參考,具體如下:

在javascript各個方面,DOM毫無疑問是最慢的一部分。DOM操作與交互要耗費(fèi)大量時間,因為它們往往需要重新渲染整個頁面或者某一部分。理解如何優(yōu)化與DOM的交互可以極大提高腳本完成的速度。

1、最小化DOM更新

看下面例子:

var list = document.getElementById("ul");
for (var i=0; i < 10; i++){
  var item = document.createELement("li");
  item.appendChild(document.createTextNode("item" + i));
  list.appendChild(item);
}
//這段代碼為列表添加10個項目。添加每個項目時,都有兩次DOM更新??偣残枰?0次DOM更新。

我們可以使用 文檔碎片 來最小化DOM更新。

var list = document.getElementById("ul");
var fragment = document.createDocumentFragment();
for (var i=0; i < 10; i++){
  var item = document.createELement("li");
  item.appendChild(document.createTextNode("item" + i));
  fragment.appendChild(item);
}
list.appendChild(fragment);

更多關(guān)于 文檔碎片,詳見之前文章 《JavaScript文檔碎片操作實例分析

2、使用innerHTML

對于比較大的DOM更改,使用innerHTML要比createElement()和appendChild()快。

var list = document.getElementById("ul");
var html = "";
for (var i=0; i < 10; i++){
  html += "<li>item" + i + "<li>";
}
list.innerHTML = html;

3、使用事件委托

詳見之前文章 《javascript性能優(yōu)化之事件委托實例詳解

4、注意NodeList

最小化訪問NodeList的次數(shù)可以極大的改進(jìn)腳本的性能,因為每次訪問NodeList,都會運(yùn)行一次基于文檔的查詢。

var imgs = document.getElementsByTagName("img");
for (var i=0, len=imgs.length; i < len; i++){
  var image = imgs[i];
  //more code
}
//這里的關(guān)鍵是長度length存入了len變量,而不是每次都去訪問NodeList的length屬性。當(dāng)在循環(huán)中使用NodeList的時候,把imgs[i]放入image變量中,以避免在循環(huán)體內(nèi)多次調(diào)用NodeList;

更多關(guān)于 NodeList,詳見之前文章 《在javascript將NodeList作為Array數(shù)組處理的方法

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • js內(nèi)置對象 學(xué)習(xí)筆記

    js內(nèi)置對象 學(xué)習(xí)筆記

    今天系統(tǒng)的學(xué)了一下javascript的內(nèi)置對象。
    2011-08-08
  • 小程序清理本地緩存的方法

    小程序清理本地緩存的方法

    這篇文章主要介紹了小程序清理本地緩存的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • JS實現(xiàn)音量控制拖動

    JS實現(xiàn)音量控制拖動

    這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)音量控制拖動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • 解決FLASH需要點擊激活的代碼

    解決FLASH需要點擊激活的代碼

    解決FLASH需要點擊激活的代碼...
    2006-12-12
  • JavaScript中一個奇葩的IE瀏覽器判斷方法

    JavaScript中一個奇葩的IE瀏覽器判斷方法

    在寫原生的Javascript的時候,因為IE的JS引擎與標(biāo)準(zhǔn)瀏覽器的JS引擎之間總有那么些差異,所以經(jīng)常會去判斷是否是IE瀏覽器
    2014-04-04
  • js獲取數(shù)組對象中的全部key和value值

    js獲取數(shù)組對象中的全部key和value值

    本文主要介紹了js獲取數(shù)組對象中的全部key和value值,主要使用JavaScript的?map()?函數(shù)和?values()?迭代器來實現(xiàn)取出數(shù)組對象的所有key值和value值,感興趣的可以了解下
    2024-01-01
  • 通過網(wǎng)頁查看JS源碼中漢字顯示亂碼的解決方法

    通過網(wǎng)頁查看JS源碼中漢字顯示亂碼的解決方法

    這篇文章給大家主要介紹了通過網(wǎng)頁查看JS源碼的時候,發(fā)現(xiàn)漢字顯示是亂碼的解決方法,文中通過圖文詳解的介紹了解決的步驟,詳細(xì)會對大家很有幫助,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • JS實現(xiàn)拖動模態(tài)框案例

    JS實現(xiàn)拖動模態(tài)框案例

    這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)拖動模態(tài)框案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Javascript 陷阱 window全局對象

    Javascript 陷阱 window全局對象

    ff和ie6下都是同樣的運(yùn)行結(jié)果,看來不是bug,那究竟是為什么呢? 注意到:對象方法訪問其對象的屬性時|必須|加以this.(和java不一樣).
    2008-11-11
  • 使用純前端JavaScript實現(xiàn)Excel導(dǎo)入導(dǎo)出方法過程詳解

    使用純前端JavaScript實現(xiàn)Excel導(dǎo)入導(dǎo)出方法過程詳解

    這篇文章主要介紹了使用純前端JavaScript實現(xiàn)Excel導(dǎo)入導(dǎo)出方法過程詳解,文章通過示例代碼和圖文解析介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論

腾冲县| 阿城市| 寿阳县| 九寨沟县| 麟游县| 明溪县| 双峰县| 紫阳县| 东乌| 巩留县| 思南县| 福建省| 星子县| 静宁县| 喀喇沁旗| 山丹县| 磐安县| 云霄县| 长顺县| 七台河市| 绥江县| 海晏县| 大宁县| 宁都县| 延庆县| 新民市| 阿拉善右旗| 盐池县| 仲巴县| 德惠市| 漳浦县| 南宁市| 宁津县| 上高县| 图们市| 富阳市| 肇庆市| 福鼎市| 石楼县| 雷波县| 贞丰县|