如何提高Dom訪問速度
在瀏覽器中對于Dom的操作和普通的腳本的操作處于兩個不同的dll中,兩個dll的交互是比較耗時的,優(yōu)化對Dom的操作可以提高腳本的執(zhí)行速度。下面是對如何優(yōu)化的一些總結(jié):
將需要多次操作的節(jié)點存儲在一個變量中,避免多次獲取。
對于大多數(shù)瀏覽器來說innerHTML操作比Dom操作速度要快,最新的瀏覽器則相反,但對于大多數(shù)日常操作來說具體差異并不大,另外,如果需要新創(chuàng)建的html片段中的腳本能夠執(zhí)行則需要使用Dom操作。
不建議用數(shù)組的 length 屬性做循環(huán)判斷條件。訪問集合的 length 比數(shù)組的length 還要慢。當(dāng)每次迭代過程訪問集合的 length 屬性時,它導(dǎo)致集合器更新??梢院唵蔚膶ength保存在一個變量中,也可以將集合先存儲在數(shù)組中。
遍歷 children 比 childNodes 更快,因為集合項更少。
重繪和重排版是負擔(dān)很重的操作,可能導(dǎo)致網(wǎng)頁應(yīng)用的用戶界面失去相應(yīng)。所以,十分有必要盡可能減少這類事情的發(fā)生。減少方法有三種,一:將需要影響的集合先隱藏,在處理完成后再展示;二:創(chuàng)建需操作節(jié)點的備份,對備份處理完成后替換原節(jié)點;三:創(chuàng)建節(jié)點群,對節(jié)點群操作完成后替換到原節(jié)點,最高效,操作方式如:
var fragment = document.createDocumentFragment();//創(chuàng)建節(jié)點群,文檔片段 appendDataToElement(fragment, data);//增加節(jié)點到節(jié)點群 document.getElementById('mylist').appendChild(fragment);//僅引發(fā)一次重新排版
另外對行內(nèi)樣式的操作可以通過document.getElementById("doc").style.cssText修改元素style屬性
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)多選框全選與反全選及購物車中刪除選中的商品功能
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)多選框全選與反全選及購物車中刪除選中的商品功能,本文通過截圖實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2019-12-12javascript代碼在ie8里報錯 document.getElementById(...) 為空或不是對象的解決方
今天更升級了ie8,發(fā)現(xiàn)原來在ie7下可以運行的代碼,不能運行了,發(fā)現(xiàn)了一些細節(jié),附臨時修改辦法。2009-11-11JavaScript使用pop方法移除數(shù)組最后一個元素用法實例
這篇文章主要介紹了JavaScript使用pop方法移除數(shù)組最后一個元素,實例分析了javascript中pop方法的使用技巧,需要的朋友可以參考下2015-04-04千萬不要錯過的JavaScript高效對比數(shù)組差異方法
前端開發(fā)中,我們通常需要對比兩個數(shù)組對象的差異。這其中有很多種方法,但是有些方法會帶來一些問題,所以本文為大家準(zhǔn)備了一個高效方法,需要的可以參考一下2023-05-05小議Function.apply()之二------利用Apply的參數(shù)數(shù)組化來提高 JavaScript程序性能
小議Function.apply()之二------利用Apply的參數(shù)數(shù)組化來提高 JavaScript程序性能...2006-11-11