成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

【EASYDOM系列教程】之定位頁(yè)面元素

MartinDai / 3195人閱讀

摘要:對(duì)象提供了屬性和方法實(shí)現(xiàn)定位頁(yè)面元素功能。定位匹配選擇器的第一個(gè)元素。是返回值,表示定位元素的集合,是一個(gè)集合。下面是使用方法的示例代碼循環(huán)遍歷所有元素上述代碼通過(guò)方法定位頁(yè)面中元素名為的元素,并遍歷所有得到的元素,為其元素的屬性添加樣式。

Element 對(duì)象提供了屬性和方法實(shí)現(xiàn)定位頁(yè)面元素功能。該對(duì)象與 Document 對(duì)象提供的屬性和方法實(shí)現(xiàn)定位頁(yè)面元素功能的區(qū)別在于,Document 對(duì)象定位的是 HTML 頁(yè)面中所有指定元素,而 Element 對(duì)象定位的是指定元素內(nèi)所有指定元素。

定位頁(yè)面元素方法

目前 Document 對(duì)象提供實(shí)現(xiàn)定位頁(yè)面元素的方法具有如下幾種:

getElementsByTagName()方法:通過(guò)頁(yè)面元素的元素名定位元素。

getElementsByClassName()方法:通過(guò)頁(yè)面元素的 class 屬性值定位元素。

querySelector()方法:通過(guò) CSS 選擇器定位第一個(gè)匹配的元素。

querySelectorAll()方法:通過(guò) CSS 選擇器定位所有匹配的元素。

接下來(lái),我們就一一進(jìn)行學(xué)習(xí)。

通過(guò)元素的元素名定位元素

其語(yǔ)法格式如下:

elements = document.getElementsByTagName(name);

在上述語(yǔ)法中,name 是參數(shù),表示所要定位元素的元素名,符號(hào)”*”表示所有元素。elements 是返回值,表示定位元素的集合,是一個(gè) NodeList 集合。

下面是使用 getElementsByTagName() 方法的示例代碼:

var elems = document.getElementsByTagName("button");
// 循環(huán)遍歷所有元素
for (var i=0; i

上述代碼通過(guò) getElementsByTagName() 方法定位 HTML 頁(yè)面中元素名為 button 的元素,并遍歷所有得到的元素,為其元素的 class 屬性添加 animate 樣式。

通過(guò)元素的 class 屬性值定位元素

其語(yǔ)法格式如下:

elements = document.getElementsByClassName(names);

在上述語(yǔ)法中,names 是參數(shù),表示所要定位元素的 class 屬性值列表,class 名稱(chēng)通過(guò)空格分隔。

值得注意的是: names 參數(shù)可以是一個(gè)樣式屬性名稱(chēng),也可以是多個(gè)樣式屬性名稱(chēng)。

elements 是返回值,表示定位元素的集合,是一個(gè) NodeList 集合。

下面是使用 getElementsByClassName() 方法的示例代碼:

var elems = document.getElementsByClassName("btn");
// 循環(huán)遍歷所有元素
for (var i=0; i

上述代碼通過(guò) getElementsByClassName() 方法定位 HTML 頁(yè)面中 class 屬性值為 btn 的元素,并遍歷所有得到的元素,為其元素的 class 屬性添加 animate 樣式。

兼容 IE 8 及之前版本的瀏覽器

getElementsByClassName() 方法只支持 IE 9 版本及之后版本的瀏覽器。也就是說(shuō),該方法并不支持 IE 8 及之前版本的瀏覽器。

下圖是不同瀏覽器的不同版本對(duì) getElementsByClassName() 方法的支持情況:

由于國(guó)內(nèi)的生產(chǎn)環(huán)境中,依舊存在使用 IE 8 及之前版本瀏覽器的情況。所以,我們需要自定義 getElementsByClassName() 方法解決瀏覽器的兼容問(wèn)題。

function getElementsByClassName(element, names) {

}

上述自定義兼容方法接受兩個(gè)參數(shù),element 參數(shù)表示調(diào)用 getElementsByClassName() 方法的對(duì)象(目前為 Document 對(duì)象),names 參數(shù)表示所要定位元素的 class 屬性值列表。

function getElementsByClassName(element, names) {
    // 檢測(cè) getElementsByClassName() 是否可用
    if (element.getElementsByClassName) {
        // 優(yōu)先使用 W3C 規(guī)范
        return element.getElementsByClassName(names);
    }else {
        // 人為解決 IE 8 之前版本不兼容問(wèn)題

    }
}

這里我們要優(yōu)先使用 W3C 規(guī)范的方法。所以,需要先判斷當(dāng)前瀏覽器環(huán)境是否存在 getElementsByClassName() 方法。

如果存在,就使用原本的 getElementsByClassName() 方法。如果不存在,就使用自定義代碼來(lái)實(shí)現(xiàn)。

function getElementsByClassName(element, names) {
    // 檢測(cè) getElementsByClassName() 是否可用
    if (element.getElementsByClassName) {
        // 優(yōu)先使用 W3C 規(guī)范
        return element.getElementsByClassName(names);
    }else {
        // 人為解決 IE 8 之前版本不兼容問(wèn)題
        
        // 獲取所有后代元素節(jié)點(diǎn)
        var elements = element.getElementsByTagName("*");
        // 定義空數(shù)組
        var result = [];
        var element, classNameStr, flag;
        // 將樣式名稱(chēng)改為數(shù)組類(lèi)型
        names = names.split(" ");
        // 循環(huán)遍歷所有元素節(jié)點(diǎn)
        for (var i=0; element = elements[i]; i++) {
              // 獲取每個(gè)元素節(jié)點(diǎn)的樣式名稱(chēng)
            classNameStr = " " + element.className + " ";
            // 開(kāi)啟開(kāi)關(guān)
            flag = true; 
            // 循環(huán)遍歷所有的樣式名稱(chēng)
            for (var j=0, name; name = names[j]; j++) {
                // 判斷當(dāng)前元素節(jié)點(diǎn)的樣式名稱(chēng)中是否包含指定的樣式名稱(chēng)
                if (classNameStr.indexOf(" " + name + " ") == -1){
                    // 如果不包含,則關(guān)閉開(kāi)關(guān),并且結(jié)束循環(huán)
                    flag = false;
                    break;
                }
            } 
            // 判斷當(dāng)前元素節(jié)點(diǎn)是否包含指定樣式名稱(chēng)
            if (flag) {
                // 如果包含,則將當(dāng)前元素節(jié)點(diǎn)添加到數(shù)組中
                result.push(element);
            }
        } 
        // 返回?cái)?shù)組(所有包含指定樣式名稱(chēng)的元素節(jié)點(diǎn))
        return result;
    }
}
通過(guò) CSS 選擇器定位元素

CSS 中的選擇器可以很便利地定位 HTML 頁(yè)面元素,DOM 的標(biāo)準(zhǔn)規(guī)范中也提供類(lèi)似的方法。

querySelector(): 定位匹配選擇器的第一個(gè)元素。

querySelectorAll(): 定位匹配選擇器的所有元素。

querySelector() 方法

其語(yǔ)法格式如下:

element = document.querySelector(selectors);

在上述語(yǔ)法中,selectors 是參數(shù),表示選擇器,可以包含一個(gè)或多個(gè) CSS 選擇器,多個(gè)則以逗號(hào)分隔。element 是返回值,表示定位元素的集合,匹配的第一個(gè)元素。

下面是使用 querySelector() 方法的示例代碼:

var btn = document.querySelector(’#btn");
// 獲取定位元素的 class 屬性值
var className = btn.className;
// 添加 animate 動(dòng)畫(huà)樣式
className += " animate";
// 將新的 class 屬性值設(shè)置
btn.className = className;

上述代碼通過(guò) querySelector() 方法定位 HTML 頁(yè)面中 id 屬性值為 btn 的元素,并為其元素的 class 屬性添加 animate 樣式。

querySelectorAll() 方法

其語(yǔ)法格式如下:

elements = document.querySelectorAll(selectors);

在上述語(yǔ)法中,selectors 是參數(shù),表示選擇器,可以包含一個(gè)或多個(gè) CSS 選擇器,多個(gè)則以逗號(hào)分隔。elements 是返回值,表示定位元素的集合,是一個(gè) NodeList 集合。

下面是使用 querySelectorAll() 方法的示例代碼:

var elems = document.querySelectorAll("button");
// 循環(huán)遍歷所有元素
for (var i=0; i

上述代碼通過(guò) querySelectorAll() 方法定位 HTML 頁(yè)面中元素名為 button 的元素,并遍歷所有得到的元素,為其元素的 class 屬性添加 animate 樣式。

本教程免費(fèi)開(kāi)源,任何人都可以免費(fèi)學(xué)習(xí)、分享,甚至可以進(jìn)行修改。但需要注明作者及來(lái)源,并且不能用于商業(yè)。

本教程采用知識(shí)共享署名-非商業(yè)性使用-禁止演繹 4.0 國(guó)際許可協(xié)議進(jìn)行許可。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87330.html

相關(guān)文章

  • EASYDOM系列教程定位頁(yè)面元素

    摘要:對(duì)象提供了屬性和方法實(shí)現(xiàn)定位頁(yè)面元素功能,這也是的標(biāo)準(zhǔn)規(guī)范中對(duì)象的主要應(yīng)用之一。是返回值,表示定位元素的集合,是一個(gè)集合。定位匹配選擇器的第一個(gè)元素。方法定位頁(yè)面元素所返回的集合就是靜態(tài)集合。 Document 對(duì)象提供了屬性和方法實(shí)現(xiàn)定位頁(yè)面元素功能,這也是 DOM 的標(biāo)準(zhǔn)規(guī)范中 Document 對(duì)象的主要應(yīng)用之一。 定位頁(yè)面元素方法 目前 Document 對(duì)象提供實(shí)現(xiàn)定位頁(yè)面元...

    NotFound 評(píng)論0 收藏0
  • EASYDOM系列教程DOM 樹(shù)結(jié)構(gòu)

    摘要:簡(jiǎn)單來(lái)說(shuō),節(jié)點(diǎn)作為樹(shù)結(jié)構(gòu)中的連接點(diǎn),最終構(gòu)成了完整的樹(shù)結(jié)構(gòu)。節(jié)點(diǎn)樹(shù)結(jié)構(gòu)通過(guò)節(jié)點(diǎn)概念,我們可以將原本的樹(shù)結(jié)構(gòu)改成節(jié)點(diǎn)樹(shù)結(jié)構(gòu)進(jìn)行表示。節(jié)點(diǎn)之間的關(guān)系中的表示模型,也可以用來(lái)表示節(jié)點(diǎn)樹(shù)結(jié)構(gòu)中節(jié)點(diǎn)之間的關(guān)系。值得注意的是和元素并不是兄弟關(guān)系。 DOM 樹(shù)結(jié)構(gòu) DOM 之所以可以訪(fǎng)問(wèn)和更新 HTML 頁(yè)面中的內(nèi)容、結(jié)構(gòu)和樣式,是因?yàn)?DOM 將 HTML 頁(yè)面解析為一個(gè) 樹(shù)結(jié)構(gòu)。 例如下面這段代...

    nemo 評(píng)論0 收藏0
  • EASYDOM系列教程獲取內(nèi)聯(lián)樣式

    摘要:回顧什么是內(nèi)聯(lián)樣式所謂內(nèi)聯(lián)樣式,就是通過(guò)頁(yè)面元素的屬性為當(dāng)前元素定義樣式。對(duì)象提供的屬性和方法可以幫助我們獲取樣式的具體內(nèi)容。遍歷對(duì)象由于對(duì)象具有屬性,返回該對(duì)象的屬性的數(shù)量。方法通過(guò)獲取的樣式屬性名,這種方式也可以通過(guò)方式進(jìn)行替換。 回顧什么是內(nèi)聯(lián)樣式 所謂內(nèi)聯(lián)樣式,就是通過(guò) HTML 頁(yè)面元素的 style 屬性為當(dāng)前元素定義 CSS 樣式。 以下代碼示例,就是通過(guò) style 屬...

    xiaodao 評(píng)論0 收藏0
  • EASYDOM系列教程】索引

    摘要:系列教程是一套免費(fèi)開(kāi)源,任何人都可以免費(fèi)學(xué)習(xí)分享,甚至可以進(jìn)行修改。本文是這套系列教程的索引也就是目錄第一回介紹在最開(kāi)始,我們先來(lái)了解是什么的作用,以及瀏覽器的支持是怎么樣的。 《EASYDOM》系列教程是一套免費(fèi)、開(kāi)源,任何人都可以免費(fèi)學(xué)習(xí)、分享,甚至可以進(jìn)行修改。但需要注明作者及來(lái)源,并且不能用于商業(yè)。 本文是這套系列教程的索引(也就是目錄): 第一回 DOM 介紹 在最開(kāi)始,我...

    yanwei 評(píng)論0 收藏0
  • EASYDOM系列教程Document 對(duì)象介紹

    摘要:對(duì)象的作用對(duì)象作為訪(fǎng)問(wèn)和更新頁(yè)面內(nèi)容的入口。這個(gè)結(jié)果充分地說(shuō)明了對(duì)象在的標(biāo)準(zhǔn)規(guī)范中代表整個(gè)頁(yè)面。對(duì)象的繼承鏈對(duì)象是繼承于對(duì)象的。對(duì)象也是的標(biāo)準(zhǔn)規(guī)范中非常重要的對(duì)象之一,而對(duì)象又是繼承于對(duì)象。 Document 對(duì)象是 DOM 的標(biāo)準(zhǔn)規(guī)范中比較重要的對(duì)象之一。該對(duì)象提供了訪(fǎng)問(wèn)和更新 HTML 頁(yè)面內(nèi)容的屬性和方法。 Document 對(duì)象的作用 Document 對(duì)象作為 DOM 訪(fǎng)問(wèn)和...

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

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

0條評(píng)論

閱讀需要支付1元查看
<