摘要:實(shí)際上,的核心就是通過(guò)選擇符查詢文檔取得元素的引用。方法該方法接收一個(gè)選擇符,返回的是所有匹配的元素而不僅僅是一個(gè)元素。而其底層實(shí)現(xiàn)則類似于一組元素的快照,而非不斷對(duì)文檔進(jìn)行搜索的動(dòng)態(tài)查詢。
選擇符API
Selector API Level1 的核心就是兩個(gè)方法:querySelector()和querySelectorAll()。實(shí)際上,jQuery的核心就是通過(guò)CSS選擇符查詢DOM文檔取得元素的引用。
querySelector()方法該方法接收一個(gè)CSS選擇符,返回與該模式匹配的第一個(gè)元素,如果沒(méi)有找到匹配的元素,返回null。如:
console.log(document.querySelector("body")); //HTMLBodyElement console.log(document.querySelector("#divId")); //HTMLDivElement console.log(document.querySelector(".info")); //HTMLParagraphElement console.log(document.querySelector("p.info")); //HTMLParagraphElement console.log(document.body.querySelector(".info")); //HTMLParagraphElement console.log(document.querySelector("body.title")); //null try{ document.querySelector(wtf); }catch(e){ console.log(e); //ReferenceError stack: message: wtf is not defined }
如上,如果傳入了不被支持的選擇符,該方法會(huì)拋出錯(cuò)誤。
querySelectorAll()方法該方法接收一個(gè)CSS選擇符,返回的是所有匹配的元素而不僅僅是一個(gè)元素。這個(gè)方法返回的是一個(gè)NodeList的實(shí)例。而其底層實(shí)現(xiàn)則類似于一組元素的快照,而非不斷對(duì)文檔進(jìn)行搜索的動(dòng)態(tài)查詢。這樣可以避免使用NodeLIst對(duì)象。能夠調(diào)用該方法的類型包括Document、DocumentFragment和Element。如:
var p = document.querySelector("#divId").querySelector(".info"); console.log(p.firstChild.nodeValue); //獲取id為divId的div里面的className值為.info的節(jié)點(diǎn) var p = document.querySelectorAll("p"); console.log(p.length); //獲取所有p的數(shù)量
同樣的,如果傳入了瀏覽器不支持的選擇符或者選擇符中有語(yǔ)法錯(cuò)誤,該方法會(huì)拋出錯(cuò)誤。
matchesSelector()方法這個(gè)方法接受一個(gè)參數(shù),CSS選擇符,如果調(diào)用元素與該選擇符匹配,返回true,否則返回false。為了解決瀏覽器兼容問(wèn)題,可以使用下面的包裝函數(shù):
function matchesSelector(element, selector) { if (element.matchSelector) { return element.matchesSelector(selector); } else if (element.msMatchesSelector) { //IE return element.msMatchesSelector(selector); } else if (element.mozMatchesSelector) { //FireFox return element.mozMatchesSelector(selector); } else if (element.webkitMatchesSelector) { //safari,chorme return element.webkitMatchesSelector(selector); } else { throw new Error("No supportted!"); } } console.log(matchesSelector(document.body, "body")); //true元素遍歷Element Traversal規(guī)范
對(duì)于元素間的空格,各瀏覽器會(huì)做出不同反應(yīng),就導(dǎo)致了在使用childNodes和firstChild等屬性時(shí)的行為不一致。
由此,Element Traversal API 為DOM元素添加了以下5個(gè)屬性:
childElementCount:子元素的個(gè)數(shù)(不包括文本節(jié)點(diǎn)和注釋);
firstElementChild:第一個(gè)子元素;
lastElementChild:最后一個(gè)子元素;
previousElementSibling:前一個(gè)同輩元素;
nextElementSibling:后一個(gè)同輩元素;
如:
支持 Element Traversal 的瀏覽器有 IE9+、Firefox 3.5+、Safari 4+、Chrome 和 Opera 10+
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/78311.html
摘要:另外,以及這兩個(gè)方法,在測(cè)試了一下,并無(wú)反應(yīng)。不知是否兼容問(wèn)題。下面是獲得焦點(diǎn)的時(shí)候,自動(dòng)以每毫秒的速度往下滾屏 文檔模式 頁(yè)面的文檔模式是由IE8引入的,文檔模式?jīng)Q定了可以使用的CSS級(jí)別、JS中的API以及如何對(duì)待文檔類型(doctype);在IE9,提供了4中文檔模式: IE5:混雜模式; IE7:IE7標(biāo)準(zhǔn)模式渲染頁(yè)面; IE8:IE8標(biāo)準(zhǔn)模式渲染頁(yè)面,可以使用Selecto...
摘要:如他返回的對(duì)象是。方法,這個(gè)方法用于確定文檔是否獲得了焦點(diǎn)。另外,需要注意的是,該屬性插入元素并不會(huì)執(zhí)行其中的腳本。在中,方法接收一個(gè)字符串,返回一個(gè)經(jīng)過(guò)無(wú)害處理后的版本。屬性同樣的,在讀模式下返回調(diào)用它的元素及所有子節(jié)點(diǎn)的標(biāo)簽。 與類相關(guān)的擴(kuò)充 getElementsByClassName()方法 接收一個(gè)參數(shù),即一個(gè)或多個(gè)類名的字符串。如: console.log(documen...
摘要:和級(jí)分為許多模塊,分別描述了的某個(gè)非常具體的子集。這些模塊主要有核心視圖事件樣式遍歷和范圍以及。另外還有方法和方法框架的變化框架和內(nèi)嵌框架分別用和表示,它們?cè)诩?jí)中都有一個(gè)新屬性這個(gè)屬性包含一個(gè)指針,指向表示框架內(nèi)容的文檔對(duì)象。 DOM2和DOM3級(jí)分為許多模塊,分別描述了DOM的某個(gè)非常具體的子集。這些模塊主要有核心(Core)、視圖(Views)、事件(Events)、樣式(Styl...
摘要:級(jí)遍歷和范圍模塊定義了兩個(gè)用于輔助完成順序遍歷結(jié)構(gòu)的類型和這兩個(gè)類型能夠基于給定的起點(diǎn)對(duì)結(jié)構(gòu)執(zhí)行深度優(yōu)先的遍歷操作。其中的屬性,表示任何遍歷方法在上一次遍歷中返回的接待你。通過(guò)設(shè)置這個(gè)屬性也可以修改遍歷繼續(xù)進(jìn)行的節(jié)點(diǎn)。 DOM2級(jí)遍歷和范圍模塊定義了兩個(gè)用于輔助完成順序遍歷DOM結(jié)構(gòu)的類型:NodeIterator和TreeWalker;這兩個(gè)類型能夠基于給定的起點(diǎn)對(duì)DOM結(jié)構(gòu)執(zhí)行深度...
閱讀 2753·2021-10-11 10:57
閱讀 1586·2021-09-26 09:55
閱讀 1322·2021-09-06 15:11
閱讀 3465·2021-08-26 14:16
閱讀 680·2019-08-30 15:54
閱讀 548·2019-08-30 12:43
閱讀 3307·2019-08-29 16:18
閱讀 2586·2019-08-23 16:14