DOM-->getElementsByClassName

getElementsByClassName

返回一個類似數(shù)組的對象,包含了所有指定 class 名稱的子元素

語法

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

瀏覽器兼容性

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

手寫getElementsByClassName

由于此方法的兼容性,我們在ie9以前需要手寫這個方法

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;
}

上面的方法如果遇到有兩個class的時候就會出問題
比如說<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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容