JS選取DOM元素的方法

來源:互聯網
上載者:User

摘自JavaScript權威指南(jQuery根據樣式選取器尋找元素的終極方式是 先用getElementsByTagName(*)擷取所有DOM元素,然後根據樣式選取器對所有DOM元素進行篩選)

今天試了下各種選取元素的方法的速度,用原生的方法比jQuery要快差不多8倍,IE8是最慢的,IE9的速度差不多是IE8的3倍,Chrome的表現最好,其次是Firefox)

選取文件項目的方法: 1、通過ID選取元素(getElementById)
   1)使用方法:document.getElementById("domId")
        其中,domId為要選取元素的id屬性值
   2)相容性:低於IE8版本的IE瀏覽器對getElementById方法的實現是不區分元素ID號的大小寫,並且會返回匹配name屬性的元素。

2、通過名稱name選取元素(getElementsByName)
    1)使用方法:document.getElementsByName("domName")
        其中,domName為要選取元素的name屬性值
    2)說明:a. 傳回值是一個nodeList集合(區別於Array)
             b. 和ID屬性不一樣,name屬性只在少數DOM元素中有效(form表單、表單元素、iframe、img)。這是因為name屬性是為了方便提交表單資料而打造的。            
             c. 為form、img、iframe、applet、embed、object元素設定name屬性時,會自動在Document對象中建立以該name屬性值命名的屬性。所以可以通過document.domName引用相應的dom對象
    3)相容性:IE中ID屬性值匹配的元素也會一起返回

3、通過標籤名選取元素(getElementsByTagName)
    1)使用方法:element.getElementsByTagName("tagName")
        其中,element是有效DOM元素(包括document)
              tagName是DOM元素的標籤名
    2)說明:a. 傳回值是一個nodeList集合(區別於Array)
             b. 該方法只能選取調用該方法的元素的後代元素。
             c. tagName不區分大小寫
             d. 當tagName為*時,表示選取所有元素(需遵從b.規則)
             e. HTMLDocument會定義一些快捷屬性來訪問標籤節點。如:document的images、forms、links屬性指向<img>、<form>、<a>標籤元素集合,而document.body和document.head總是指向body和head標籤(當未顯示聲明head標籤時,瀏覽器也會建立document.head屬性)

4、通過CSS類選取元素(getElementsByClassName)
    1)使用方法:element.getElementsByClassName("classNames")
        其中,element是有效DOM元素(包括document)
              classNames是CSS類名稱的組合(多個類名之間用空格,可以是多個空格隔開),
              如element.getElementsByClassName("class2 class1")將選取elements後代元素中同時應用了class1和class2樣式的元素(樣式名稱不區分先後順序)
    2)說明:a. 傳回值是一個nodeList集合(區別於Array)
             b. 該方法只能選取調用該方法的元素的後代元素。
    3)相容性:IE8及其以下版本的瀏覽器未實現getElementsByClassName方法

5、通過CSS選取器選取元素
    1)使用方法:document.querySelectorAll("selector")
        其中,selector為合法的CSS選取器
    2)說明:a. 傳回值是一個nodeList集合(區別於Array)
    3)相容性:IE8及其以下版本的瀏覽器只支援CSS2標準的選取器文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.