document.getElementsByClassName的

2017-03-09  本文已影响0人  peng桑

1.原生document.getElementsByClassName

兼容性ie9+,var elements = element.getElementsByClassName(names);参数为指定类名,格式为字符串,也可以同时指定多个类名,如'a','a b','a b c'

2.兼容性方法实现

function getByClassName(name,node){
    let all=node?node.getElementsByTagName('*'):document.getElementsByTagName('*')
    let arr=[]
    let nameArr=name.split(' ')
    for(let i=0;i<all.length;i++){
        if(isallhave(all[i],nameArr)){
            arr.push(all[i])
        }
    }
    return arr
}
function isallhave(ele,name){
    if(ele.className){
        for(let j=0;j<name.length;j++){
            if(ele.className.split(' ').indexOf(name[j]) === -1){
            return false
             }
        }
        return true   
    } 
    return false
}

可以实现多个类名查找let class=getByClassName(name,node)name可以是多个类名,node为指定的元素节点,忽略则认为是在document下查找。

上一篇下一篇

猜你喜欢

热点阅读