js 中getElementsByClassName的兼容性写法

/*
思路:(getElementsByClassName在IE中不支持)
1.首先判断浏览器是否至此getElementsByClassName方法
2.如果支持,则直接使用getElementsByClassName方法;
3.如果不支持,则获取该元素下所有的子元素,
  并对每个元素的className进行查询,这里要考虑多个类名的情况
  因此对每个子元素的类名通过split(' ');进行类名的拆封,split返回的是一个数组,因此需要一次遍历,如果匹配,则通过push方法存放到数组中,如果不匹配进行下次循环
  最后返回获得的数组
*/
function getClassName(obj, className) {  
    // 没有传递 obj 参数,则默认使用 document
    var ele = obj || document;  
    //兼容ie浏览器
    if (!ele.getElmentsByClassName) { 
        var result = [];
        var elmemets = ele.getElementsByTagName("*");
        for (var i = 0; i < elements.length; i++) {
            //使用split函数将元素中含有的多个类名分开,并一个个查找
            var classNames = elements[i].className.split(" ");
            // 遍历当前元素的每个类名  
            for (var j = 0; j < classNames.length; j++) {
                //如果该元素中存在要获取的类明,则加入到数组中
                if (classNames[j] == className) {
                    result.push(elements[j]);
                }
            }
        }
    } else {//w3c写法
        return ele.getElementsByClassName(className);
    }
    return result;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值