javascript性能優(yōu)化之DOM交互操作實例分析
本文實例講述了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ù)可以極大的改進腳本的性能,因為每次訪問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)文章
JavaScript NodeTree導(dǎo)航欄(菜單項JSON類型/自制)
利用閑暇時間自己做了個JavaScript NodeTree,網(wǎng)上有很多類似的效果,本例主要是練練手,鞏固下知識,感興趣的朋友可以了解下,或許對你學(xué)習(xí)NodeTree導(dǎo)航欄有所幫助,認(rèn)為好的就分享嘍2013-02-02JS中數(shù)組實現(xiàn)代碼(倒序遍歷數(shù)組,數(shù)組連接字符串)
這篇文章主要介紹了JS中數(shù)組實現(xiàn)代碼(倒序遍歷數(shù)組,數(shù)組連接字符串),代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12JavaScript實現(xiàn)多維數(shù)組的方法
這篇文章主要介紹了JavaScript實現(xiàn)多維數(shù)組的方法,有需要的朋友可以參考一下2013-11-11JS?中的URLSearchParams?對象操作(以對象的形式上傳參數(shù)到url)
這篇文章主要介紹了JS中URLSearchParams的基本用法,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12