IE浏览器不支持document.getElementsByClassName的解决办法

1、基础方法①

/**
 * 通过class名和标签名获取css样式对象组
 */
function getClassNames(classStr, tagName) {
    if (document.getElementsByClassName) {
        return document.getElementsByClassName(classStr)
    } else {
        // 为了兼容ie8及其以下版本的方法
        var nodes = document.getElementsByTagName(tagName), ret = [];
        for (i = 0; i < nodes.length; i++) {
            if (hasClass(nodes[i], classStr)) {
               ret.push(nodes[i])
            }
        }
        return ret;
    }
} 

2、基础方法②

/**
 * 判断节点class是否存在
 */
function hasClass(tagStr, classStr) {
    // 这个正则表达式是因为class可以有多个,判断是否包含
    var arr = tagStr.className.split(/\s+/);
    for ( var i = 0; i < arr.length; i++) {
        if (arr[i] == classStr) {
            return true;
        }
    }
    return false;
}

3、调用

var tags = getClassNames('active', 'li');
if (null != tags) {
    // 遍历对象,改其css样式
    for ( var i = 0; i < tags.length; i++) {
        tags[i].className = '';
    }
}
param.className = 'active';

4、说明

'active'是要操作的样式,'li'是要查找的标签。

posted @ 2020-05-13 11:16  敲代码的小浪漫  阅读(605)  评论(0编辑  收藏  举报