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