摘要:在低于瀏覽器中,也返回匹配屬性的元素。例如通過(guò)匹配元素的的值來(lái)獲取元素。結(jié)果返回對(duì)象其實(shí)很類似于的選擇元素的方法,而也是解決獲取頁(yè)面元素的終極方法。
1: 獲取文檔元素的方法有7個(gè)
1: getElementById(id) [通過(guò)id獲?。? 2: getElementsByName(name) [通過(guò)元素的name屬性獲?。? 3: getElementsByTagName(tagName) [通過(guò)Tag名字獲?。? 4: getElementsByTagNameNS(nameSpace, tagName) [通過(guò)值得namSpace下的Tag名字獲?。? 5: getElementsByClassName(className)[通過(guò)元素CSS類名字獲?。? 6: querySelectorAll(cssQuery) [通過(guò)匹配CSS選擇器獲取匹配的所有元素] 7: querySelector(cssQuery)[通過(guò)匹配CSS選擇器獲取匹配的第一個(gè)元素]
其中:
1: 在方法名上,除了ById是單數(shù)的"Element", 其他都是復(fù)數(shù)的"Elements" 2: 返回HTMLElement類型的有: getElementById() querySelector() 3: 其余都是返回NodeList或者HTMLCollection 4: 同時(shí)定義在Document和Element上的方法有: getElementsByClassName() getElementsByTagName() getElementsByTagNameNS() querySelectorAll() querySelector()
先來(lái)對(duì)以上幾點(diǎn)進(jìn)行點(diǎn)直觀的感受,假如我們的HTML代碼是這樣的:
item list
1: 返回HTMLElement的nodeList的區(qū)別
2: 同時(shí)定義在Document和Element上的方法區(qū)別
bookItem是在Element元素(bookList[0])上使用getElementsByTagName()得到的結(jié)果,而allLi是在document上使用getElementsByTagName()得到的結(jié)果。可以看出在某個(gè)HTMLElement元素上使用獲取dom元素的話,結(jié)果只會(huì)返回此元素的后代節(jié)點(diǎn)里滿足查詢條件的節(jié)點(diǎn),而document上使用,會(huì)返回整個(gè)文檔里面的滿足查詢條件的全部節(jié)點(diǎn)。
接下來(lái)對(duì)以上6個(gè)方法進(jìn)行具體的講解:
1: getElementById(id)
var pageTitle = document.getElementById("pageTitle");
沒(méi)什么好說(shuō)的,傳入元素id的值,返回HTMLElement。
瀏覽器特性:
1: 在低于IE 8瀏覽器中,getElementById()對(duì)id不區(qū)分大小寫。 2: 在低于IE 8瀏覽器中,也返回匹配name屬性的元素。
2: getElementsByName(name)
var elements = document.getElementsByName("xxx");
通過(guò)元素的name屬性選取元素,返回NodeList對(duì)象,包含若干Element對(duì)象的只讀數(shù)組
特別注意:
1: getElementsByName()定義在HTMLDocument類中,而不是Document類中,所以只能在HTML文檔可以用,在XML文檔里不可以用。 2: 在IE中此方法也返回id屬性匹配的元素 3: 為某些HTML元素設(shè)置name屬性,會(huì)在Document對(duì)象上設(shè)置同名的屬性(如果此屬性名不存在)
針對(duì)以上第3點(diǎn)解釋一下:
在document上自動(dòng)創(chuàng)建了以name的值為名字的屬性:‘logo’和‘infoForm’。如果HTML里面只有一個(gè)元素的name是這個(gè)值,那通過(guò)document的屬性去取值,返回這個(gè)HTMLElement對(duì)象;如果有多個(gè)元素的name是這個(gè)值,那就返回包含這些元素的NodeList對(duì)象。
3: getElementsByTagName(tagName)
var spanElements = document.getElementsByTagName("span");
傳入tag的名稱,遞歸地獲取匹配的元素,先看一段代碼
parent child Sibling
從返回結(jié)果的NodeList對(duì)象的元素順序來(lái)看,它會(huì)遞歸地把某個(gè)節(jié)點(diǎn)都查詢完,然后再去查詢它的兄弟節(jié)點(diǎn)。
特別注意:
1: 因?yàn)镠TML不區(qū)分大小寫,所以這個(gè)方法對(duì)tag名也不區(qū)分大小寫,就是說(shuō)如果查詢‘span’,同時(shí)也會(huì)匹配‘’元素
2: 如果傳入通配符"*",會(huì)獲得一個(gè)代表真哥哥文檔中元素的NodeList對(duì)象。例如:
4: getElementsByClassName(className)
var elements = document.getElementsByClassName("red");
通過(guò)匹配元素的class的值來(lái)獲取元素。參數(shù)為包含全部class值的字符串(class前面不加"."),當(dāng)某個(gè)元素的class值有多個(gè)時(shí),參數(shù)用空格隔開(kāi)。
可以看到查詢結(jié)果不包含第一個(gè)
元素,因?yàn)樗腸lass里面沒(méi)有‘bold’;結(jié)果包含第三個(gè)
元素,因?yàn)樗腸lass包含參數(shù)里面的所有class名,即使它自己本身還多出一個(gè)別的class。所以這是一個(gè)“包含全部”而不是“完全相等“的查詢。
5: querySelectorAll(cssQuery)
var elements = document.querySelectorAll(‘.bookList li’);
參數(shù)為一個(gè)字符串,內(nèi)容為和CSS語(yǔ)法一樣的,css選擇器(通過(guò)".", "#"等來(lái)區(qū)分是class還是id之類的值)。結(jié)果返回NodeList對(duì)象
其實(shí)很類似于jQuery的選擇元素的方法,而querySelectorAll()也是解決獲取頁(yè)面元素的終極方法。
6: querySelector(cssSelector)
var element = document.querySelector(".red");
它的用法與querySelectorAll()相似,但是有兩個(gè)區(qū)別:
1: querySelector()只返回匹配的第一個(gè)元素 2: querySelector()返回結(jié)果為HTMLElement, 而不是一個(gè)包含一個(gè)元素的NodeList對(duì)象
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88308.html
摘要:假如對(duì)應(yīng)的為一組對(duì)象,則返回該組對(duì)象中的第一個(gè)。方法返回帶有指定標(biāo)簽名的節(jié)點(diǎn)對(duì)象的集合。語(yǔ)法說(shuō)明是標(biāo)簽的名稱,如等標(biāo)簽名。是一個(gè)人的身份證號(hào)碼,是唯一的。注意把指定的屬性設(shè)置為指定的值。表示文檔所在窗口的當(dāng)前寬度。 簡(jiǎn)述 本系列將持續(xù)更新Javascript基礎(chǔ)部分的知識(shí),誰(shuí)都想掌握高端大氣的技術(shù),但是我覺(jué)得沒(méi)有一個(gè)扎實(shí)的基礎(chǔ),我認(rèn)為一切高階技術(shù)對(duì)我來(lái)講都是過(guò)眼云煙,要成為一名及格的前...
摘要:有級(jí)級(jí)級(jí)共個(gè)級(jí)別。事件類型事件類型鼠標(biāo)事件鍵盤事件事件事件處理器執(zhí)行代碼的程序在事件發(fā)生時(shí)會(huì)對(duì)事件做出響應(yīng)。在標(biāo)簽中使用事件處理器的語(yǔ)法是標(biāo)簽事件處理器代碼事件處理程序事件就是用戶或?yàn)g覽器自身執(zhí)行的某種動(dòng)作。 DOM介紹 D(文檔)可以理解為整個(gè)Web加載的網(wǎng)頁(yè)文檔,O(對(duì)象)可以理解為類似window對(duì)象只來(lái)的東西,可以調(diào)用屬性和方法,這里我們說(shuō)的是document對(duì)象,M(模型)可...
摘要:對(duì)象對(duì)象的概念首先了解一下對(duì)象怎么用。對(duì)象是解析節(jié)點(diǎn)樹(shù)結(jié)構(gòu)的主要入口。繼承鏈關(guān)系對(duì)象是繼承于對(duì)象的,是一個(gè)用于接收事件的對(duì)象。代碼示例的標(biāo)準(zhǔn)規(guī)范中的對(duì)象和對(duì)象都是繼承于對(duì)象的。屬性對(duì)象的屬性用于獲取指定的節(jié)點(diǎn)名稱。參數(shù)表示要?jiǎng)h除的節(jié)點(diǎn)。 Node對(duì)象 Node對(duì)象的概念 首先了解一下Node對(duì)象怎么用。DOM的標(biāo)準(zhǔn)規(guī)范中提供了Node對(duì)象,該對(duì)象主要提供了用于解析DOM節(jié)點(diǎn)樹(shù)結(jié)構(gòu)的屬性...
摘要:事件處理允許對(duì)事件做出反應(yīng)。還可以用代碼為多個(gè)元素分配相同的事件。指定事件監(jiān)聽(tīng)器接下來(lái)看看怎樣為元素分配事件監(jiān)聽(tīng)器。 翻譯:瘋狂惡的技術(shù)宅https://medium.freecodecamp.o... 本文首發(fā)微信公眾號(hào):jingchengyideng歡迎關(guān)注,每天都給你推送新鮮的前端技術(shù)文章 Javascript DOM(文檔對(duì)象模型)是一個(gè)允許開(kāi)發(fā)人員操縱頁(yè)面內(nèi)容、結(jié)構(gòu)和風(fēng)...
摘要:訪問(wèn)集合元素時(shí)使用局部變量對(duì)于任何類型的訪問(wèn),如果對(duì)同一個(gè)屬性或者方法訪問(wèn)多次,最好使用一個(gè)局部變量對(duì)此成員進(jìn)行緩存。 三、DOM Scripting DOM編程 我們都知道對(duì)DOM操作的代價(jià)昂貴,這往往成為網(wǎng)頁(yè)應(yīng)用中的性能瓶頸。在解決這個(gè)問(wèn)題之前,我們需要先知道什么是DOM,為什么他會(huì)很慢。 DOM in the Browser World 瀏覽器中的DOM DOM是一個(gè)獨(dú)立于語(yǔ)言...
閱讀 1764·2021-09-23 11:34
閱讀 2488·2021-09-22 15:45
閱讀 13023·2021-09-22 15:07
閱讀 2253·2021-09-02 15:40
閱讀 4157·2021-07-29 14:48
閱讀 1089·2019-08-30 15:55
閱讀 3254·2019-08-30 15:55
閱讀 2201·2019-08-30 15:55