摘要:實際上,的核心就是通過選擇符查詢文檔取得元素的引用。方法該方法接收一個選擇符,返回的是所有匹配的元素而不僅僅是一個元素。而其底層實現則類似于一組元素的快照,而非不斷對文檔進行搜索的動態查詢。
選擇符API
Selector API Level1 的核心就是兩個方法:querySelector()和querySelectorAll()。實際上,jQuery的核心就是通過CSS選擇符查詢DOM文檔取得元素的引用。
querySelector()方法該方法接收一個CSS選擇符,返回與該模式匹配的第一個元素,如果沒有找到匹配的元素,返回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 }
如上,如果傳入了不被支持的選擇符,該方法會拋出錯誤。
querySelectorAll()方法該方法接收一個CSS選擇符,返回的是所有匹配的元素而不僅僅是一個元素。這個方法返回的是一個NodeList的實例。而其底層實現則類似于一組元素的快照,而非不斷對文檔進行搜索的動態查詢。這樣可以避免使用NodeLIst對象。能夠調用該方法的類型包括Document、DocumentFragment和Element。如:
var p = document.querySelector("#divId").querySelector(".info"); console.log(p.firstChild.nodeValue); //獲取id為divId的div里面的className值為.info的節點 var p = document.querySelectorAll("p"); console.log(p.length); //獲取所有p的數量
同樣的,如果傳入了瀏覽器不支持的選擇符或者選擇符中有語法錯誤,該方法會拋出錯誤。
matchesSelector()方法這個方法接受一個參數,CSS選擇符,如果調用元素與該選擇符匹配,返回true,否則返回false。為了解決瀏覽器兼容問題,可以使用下面的包裝函數:
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規范
對于元素間的空格,各瀏覽器會做出不同反應,就導致了在使用childNodes和firstChild等屬性時的行為不一致。
由此,Element Traversal API 為DOM元素添加了以下5個屬性:
childElementCount:子元素的個數(不包括文本節點和注釋);
firstElementChild:第一個子元素;
lastElementChild:最后一個子元素;
previousElementSibling:前一個同輩元素;
nextElementSibling:后一個同輩元素;
如:
支持 Element Traversal 的瀏覽器有 IE9+、Firefox 3.5+、Safari 4+、Chrome 和 Opera 10+
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78311.html
摘要:另外,以及這兩個方法,在測試了一下,并無反應。不知是否兼容問題。下面是獲得焦點的時候,自動以每毫秒的速度往下滾屏 文檔模式 頁面的文檔模式是由IE8引入的,文檔模式決定了可以使用的CSS級別、JS中的API以及如何對待文檔類型(doctype);在IE9,提供了4中文檔模式: IE5:混雜模式; IE7:IE7標準模式渲染頁面; IE8:IE8標準模式渲染頁面,可以使用Selecto...
摘要:如他返回的對象是。方法,這個方法用于確定文檔是否獲得了焦點。另外,需要注意的是,該屬性插入元素并不會執行其中的腳本。在中,方法接收一個字符串,返回一個經過無害處理后的版本。屬性同樣的,在讀模式下返回調用它的元素及所有子節點的標簽。 與類相關的擴充 getElementsByClassName()方法 接收一個參數,即一個或多個類名的字符串。如: console.log(documen...
摘要:和級分為許多模塊,分別描述了的某個非常具體的子集。這些模塊主要有核心視圖事件樣式遍歷和范圍以及。另外還有方法和方法框架的變化框架和內嵌框架分別用和表示,它們在級中都有一個新屬性這個屬性包含一個指針,指向表示框架內容的文檔對象。 DOM2和DOM3級分為許多模塊,分別描述了DOM的某個非常具體的子集。這些模塊主要有核心(Core)、視圖(Views)、事件(Events)、樣式(Styl...
摘要:級遍歷和范圍模塊定義了兩個用于輔助完成順序遍歷結構的類型和這兩個類型能夠基于給定的起點對結構執行深度優先的遍歷操作。其中的屬性,表示任何遍歷方法在上一次遍歷中返回的接待你。通過設置這個屬性也可以修改遍歷繼續進行的節點。 DOM2級遍歷和范圍模塊定義了兩個用于輔助完成順序遍歷DOM結構的類型:NodeIterator和TreeWalker;這兩個類型能夠基于給定的起點對DOM結構執行深度...
閱讀 2738·2021-10-11 10:57
閱讀 1569·2021-09-26 09:55
閱讀 1310·2021-09-06 15:11
閱讀 3447·2021-08-26 14:16
閱讀 662·2019-08-30 15:54
閱讀 535·2019-08-30 12:43
閱讀 3290·2019-08-29 16:18
閱讀 2565·2019-08-23 16:14