最新国产好看的视频,伊人天堂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操作與交互要耗費大量時間,因為它們往往需要重新渲染整個頁面或者某一部分。理解如何優(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,都會運行一次基于文檔的查詢。

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下都是同樣的運行結(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

最新評論

济源市| 会昌县| 石柱| 托克逊县| 岚皋县| 贡嘎县| 永丰县| 天柱县| 达拉特旗| 阳江市| 周口市| 靖边县| 丰镇市| 广丰县| 剑阁县| 将乐县| 彭山县| 札达县| 南和县| 绍兴县| 龙门县| 咸宁市| 洱源县| 台山市| 武穴市| 阜阳市| 鄂托克旗| 天水市| 峨边| 莱芜市| 东港市| 渝北区| 延长县| 内丘县| 诏安县| 色达县| 湖口县| 宜良县| 讷河市| 洪湖市| 乳山市|