国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript DOM擴(kuò)展——“選擇符API和元素遍歷”的注意要點(diǎn)

justCoding / 564人閱讀

摘要:實(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è)同輩元素;

如:

  • list1
  • list2
  • list3
var ul = document.querySelector("#ulId"); console.log(ul.querySelectorAll("li").length); //3個(gè)list console.log(ul.childElementCount); //3個(gè)list console.log(ul.firstElementChild.firstChild.nodeValue); //list1 console.log(ul.lastElementChild.firstChild.nodeValue); //list3 var li = ul.querySelectorAll("li"); var li1 = li[0]; console.log(li1.firstChild.nodeValue); //list1 console.log(li1.nextElementSibling.firstChild.nodeValue); //list2 console.log(li1.nextElementSibling.previousElementSibling.firstChild.nodeValue); //list1

支持 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

相關(guān)文章

  • JavaScript DOM擴(kuò)展——“專有擴(kuò)展注意要點(diǎn)

    摘要:另外,以及這兩個(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...

    wudengzan 評(píng)論0 收藏0
  • JavaScript DOM擴(kuò)展——“HTML5”注意要點(diǎn)

    摘要:如他返回的對(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...

    cppowboy 評(píng)論0 收藏0
  • JavaScript DOM2DOM3——“DOM變化”注意要點(diǎn)

    摘要:和級(jí)分為許多模塊,分別描述了的某個(gè)非常具體的子集。這些模塊主要有核心視圖事件樣式遍歷和范圍以及。另外還有方法和方法框架的變化框架和內(nèi)嵌框架分別用和表示,它們?cè)诩?jí)中都有一個(gè)新屬性這個(gè)屬性包含一個(gè)指針,指向表示框架內(nèi)容的文檔對(duì)象。 DOM2和DOM3級(jí)分為許多模塊,分別描述了DOM的某個(gè)非常具體的子集。這些模塊主要有核心(Core)、視圖(Views)、事件(Events)、樣式(Styl...

    騫諱護(hù) 評(píng)論0 收藏0
  • JavaScript DOM2DOM3——“遍歷注意要點(diǎn)

    摘要:級(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í)行深度...

    antz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<