DOM-->getElementsByClassName

getElementsByClassName

返回一個(gè)類(lèi)似數(shù)組的對(duì)象,包含了所有指定 class 名稱(chēng)的子元素

語(yǔ)法

var elements = document.getElementsByClassName(names); // or:
var elements = rootElement.getElementsByClassName(names);
  • elements 是查找到的所有元素的集合 HTMLCollection .
  • names 是一個(gè)字符串,表示用于匹配的 class 名稱(chēng)列表; class 名稱(chēng)通過(guò)空格分隔
  • getElementsByClassName 可以在任意的元素上調(diào)用,不僅僅是 document。 調(diào)用這個(gè)方法的元素將作為本次查找的根元素.

瀏覽器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) 3.0 9.0 (Yes) (Yes)

手寫(xiě)getElementsByClassName

由于此方法的兼容性,我們?cè)趇e9以前需要手寫(xiě)這個(gè)方法

function getElementsByClassName(name){
    var findArr = [];
    var arr = document.getElementsByTagName('*');
    
    for(var i=0; i<arr.length; i++){
        if(arr[i].className === name){
            findArr.push(arr[i]);
        }
    }

    return findArr;
}

上面的方法如果遇到有兩個(gè)class的時(shí)候就會(huì)出問(wèn)題
比如說(shuō)<li class="box box1"></li>

function getElementsByClassName(name){
    var findArr = [];
    var arr = document.getElementsByTagName('*');
    
    for(var i=0; i<arr.length; i++){
        var classList = arr[i].className.split(' ');
        for(var j=0; j< classList.length; j++){
            if(classList[j] === name){
                findArr.push(arr[i]);
                break;
            }
        }
    }

    return findArr;
}

指定查找范圍

function getElementsByClassName(rootElement,name){
    var findArr = [];
    var arr = rootElement.getElementsByTagName('*');
    
    for(var i=0; i<arr.length; i++){
        var classList = arr[i].className.split(' ');
        for(var j=0; j< classList.length; j++){
            if(classList[j] === name){
                findArr.push(arr[i]);
                break;
            }
        }
    }

    return findArr;
}

指定標(biāo)簽

function getElementsByClassName(rootElement,tagName,name){
    var findArr = [];
    var arr = rootElement.getElementsByTagName(tagName);
    
    for(var i=0; i<arr.length; i++){
        var classList = arr[i].className.split(' ');
        for(var j=0; j< classList.length; j++){
            if(classList[j] === name){
                findArr.push(arr[i]);
                break;
            }
        }
    }

    return findArr;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Node類(lèi)型 DOM1級(jí)定義了一個(gè)Node接口,該接口由DOM中所有節(jié)點(diǎn)類(lèi)型實(shí)現(xiàn)。這個(gè)Node接口在JS中是作為N...
    Maggie_77閱讀 427評(píng)論 0 0
  • 原文 鏈接 關(guān)注公眾號(hào)獲取更多資訊 一、基本類(lèi)型介紹 1.1 Node類(lèi)型 DOM1級(jí)定義了一個(gè)Node接口,該接...
    前端進(jìn)階之旅閱讀 3,962評(píng)論 7 34
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評(píng)論 18 139
  • 我叫夏清菡,今年二十歲。我在一家服裝廠(chǎng)實(shí)習(xí),而我爸爸,就是服裝企業(yè)家。他非常希望我能學(xué)好服裝設(shè)計(jì),服裝制作……因?yàn)?..
    鐘塔水閱讀 313評(píng)論 0 0
  • 如果你是個(gè)高富帥,那么會(huì)人會(huì)問(wèn)有多高,有多富,有多帥,這樣分層次的話(huà),因?yàn)楦吒粠浺彩怯袑哟沃郑鴮哟沃郑矝Q定...
    羽商三少閱讀 650評(píng)論 9 3