js 中getElementsByClassName的兼容性写法

来源:互联网 发布:智能音箱 知乎 编辑:程序博客网 时间:2024/04/30 01:03
/*思路:(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
原创粉丝点击