getByClass兼容className

由于document.getElementsByClassName('class名');在IE8及以下版本不兼容所以需要封装一个函数getByClasss();
字符串切割

function getByClass(oParent,sClass){
  if(document.getElementsByClassName){ 
     return oParent.getElementsByClassName(sClass);
  }else{    
   //获取页面中所有元素    
    var aEle=oParent.getElementsByTagName('*'); 
    var arr=[]; //找个容器存className    
    for(var i=0;i<aEle.length;i++){ 
       //把每个元素的className用空格切开
        var tmp=aEle[i].className.split(' '); 
       //从数组里找想要的className 
       if(findInArr(tmp,sClass)){ 
           arr.push(aEle[i]);
        } 
     } 
   return arr;
  }
}

在数组中找相同的className

function findInArr(arr,n){
    for (var i=0;i<arr.length;i++) {
       if(arr[i]==n)return true;
    }
    return false;
};

正则实现,不需要findInArr函数

function getByClass(oParent,sClass){ 
     if(document.getElementsByClassName){ 
        return oParent.getElementsByClassName(sClass);
      }else{
//ie 6 7 8 
        var arr=[];
         var aEle=oParent.getElementsByTagName('*');
         for(var i=0;i<aEle.length;i++){
//          var arr2=aEle[i].className.split(/\s+/);
//          if(findArr(arr2,sClass)){
//             arr.push(aEle[i]);
//          }            
          var reg=new RegExp('\\b'+sClass+'\\b');  
          if(reg.test(aEle[i].className)){ 
              arr.push(aEle[i]);
            } 
        }
         return arr; 
     }
  };
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,268评论 0 4
  • 9.19--9.23 第7章 正则表达式 正则表达式是一个拆分字符串并查询相关信息的过程。 推荐练习网站: js ...
    如201608阅读 1,062评论 0 4
  • 1 智商是随着我们知识不断增加,心智不断提升有着无限上升空间的行动改变,智商映射的其实就是一种解决问题的能力。 智...
    薇莉不罔不怠阅读 321评论 0 0
  • 一命二运三风水 大多数没有背景的普通人在这个社会是很吃亏的。我们更多的时候会觉彷徨、黑暗、迷茫,苦于没有目标方向和...
    怪鸭帆阅读 857评论 0 9