一下子遊篇學習之DOM編程

來源:互聯網
上載者:User

標籤:style   color   ar   使用   java   sp   for   檔案   資料   

每次想到“DOM”編程就會自然聯想到“效能瓶頸”。我覺得有兩部分原因:

1.DOM自己本身操作代價昂貴,因為瀏覽器通常要求DOM 實現和JavaScript 實現保持相互獨立;

2.嘿嘿,本人自身的原因,沒有本質全面認識她,沒有學習和思考如何高效運用其。

顯而見之,我目前可以著手改進第二條呀。。。。

忘了哪位大牛說過的一句話,“輕輕地觸摸DOM,並盡量保持在ECMAScript 範圍內。”

具體做法:

first:DOM 訪問和修改

who?   innerHTML or標準的DOM方法

使用DOM 方法更新頁面內容的另一個途徑是複製已有DOM 元素

 

second:HTML集合(是用於存放DOM 節點引用的類數組對象)

document.getElementsByName()
document.getElementsByClassName()
document.getElementsByTagName_r()

document.images

document.links

document.forms

document.forms[0].elements

HTML 集合是一個“虛擬存在,意味著當底層文檔更新時,它們將自動更新”,HTML 集合實際上在查詢文檔,當你更新資訊時,每次都要重複執行這種查詢操作,正是低效率的來源。

--------方案

1.將length 緩衝一下。

2.先將集合元素拷貝到數組(數組副本,評估是否有意),因為遍曆數組比遍曆集合快。

3.如果同一個DOM 屬性或方法被訪問一次以上,最好使用一個局部變數緩衝此DOM 成員。

 

third:抓取DOM

1.用nextSibling 抓取DOM 是首選方法

2.DOM 屬性諸如childNode,firstChild,和nextSibling 不區分元素節點和其他類型節點。

元素節點:children

3.函數querySelectorAll()接收一個CSS 選取器字串參數並返回一個NodeList(由合格節點構成的類數組對象)。此函數不返回
HTML 集合

列瀏覽器支援選取器API:Internet Explorer 8,Firefox 3.5,Safari 3.1,Chrome 1,Opera 10。

 

forth: 重繪和重排版

當瀏覽器下載完所有頁面的html標記、javascript、css、圖片之後,它解析檔案並建立兩個內部資料結構

a dom tree(表示頁面結構)+ a render tree(表示dom節點如何顯示)渲染樹上的節點稱為“框”或者“盒”。

擷取布局資訊的操作將導致重新整理隊列動作:

• offsetTop, offsetLeft, offsetWidth, offsetHeight
• scrollTop, scrollLeft, scrollWidth, scrollHeight
• clientTop, clientLeft, clientWidth, clientHeight
• getComputedStyle() (currentStyle in IE)(在IE 中此函數稱為currentStyle)

該將多個DOM 和風格改變合并到一個批次中一次性執行:cssText 屬性實現、修改CSS 的類名稱

firth:批量修改DOM
1.從文檔流中摘除該元素---》對其應用多重改變----》將元素帶迴文檔中

1.1隱藏元素,進行修改,然後再顯示它。

1.2使用一個文檔片斷在已存DOM 之外建立一個子樹,然後將它拷貝到文檔中。

1.3將原始元素拷貝到一個脫離文檔的節點中,修改副本,然後覆蓋原始元素。

 

sixth:事件託管

事件逐層冒泡總能被父元素捕獲。採用事件託管技術之後,你只需要在一個封裝元素上掛接一個控制代碼,用於處理子項目發生的所有事件。

 

一下子遊篇學習之DOM編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.