封装getByClass(JS获取class的方法封装为一个函数)
获取方法一(普通版) 获取单一的class:
function getByClass(oParent, sClass) {//两个形参,第一个对象oParent 第二个样式名class
    var aEle = oParent.getElementsByTagName("*");//从对象里选择所有元素
    var aResult = [];//存放匹配出来结果的数组
    for (var i = 0; i < aEle.length; i++) {//遍历所有oParent元素里面的所有元素
        if (aEle[i].className == sClass) {//如果选出了的第i个元素等于传进来的参数的类名
            aResult.push(aEle[i]);//就把结果添加到数组里面
        }
    }
    return aResult; //返回数组
}
获取方法二(完美版)
1、多个class获取—>正则表达式:
function getByClass(oParent, sClass) {
var aEle = oParent.getElementsByTagName('*');
var aResult = [];
var re = new RegExp('\\b' + sClass + '\\b', 'i');//正则表达式,\b是单词分界处, for ( var i = 0; i < aEle.length; i++) {
if (re.test(aEle[i].className)) {//test方法返回Boolean的值
aResult.push(aEle[i]);
}
} return aResult;
}
2、 多个class获取—>数组:
 function getByClass(oParent, sClass) {
    var aResult = [];
    var aEle = oParent.getElementsByTagName('*');
    for (var i = 0; i < aEle.length; i++) {
        var arr = aEle[i].className.split(/\s+/);
        for (var j = 0; j < arr.length; j++) {
            if (arr[j] == sClass) {
                aResult.push(aEle[i])
            }
        }
    }
    return aResult;
};
获取方法三(复杂版):
function getClass(classname, obj) {//obj就是找的标签范围;  
    var obj = obj || document;//如果obj没有参数传进来的话就为假,就返回document;  
    var arr = [];//设置一个数组来存储在ie下标签的className属性值等于类名的元素;  
    if (document.getElementsByClassName) {//如果条件为真,就代表浏览器为火狐;  
        return document.getElementsByClassName(classname)//火狐下面直接返回结果;  
    } else {//不是火狐  
        var alls = document.getElementsByTagName("*");//首先找到页面所有的标签;  
        for (var i = 0; i < alls.length; i++) {
            if (checkclass(alls[i].className, classname)) {//1.1.回调函数判断类名,因为同一标签可能有多个类名;  
                arr.push(alls[i])//1.3.如果是真的,就把这个元素推进数组里面;  
            }
        }
        return arr;
    }
}
function checkclass(startclass, endclass) {//判断类名  
    var arr = startclass.split(" ");//多个类名用空格分隔成不同元素的数组;  
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] == endclass) {//1.2.被分割的数组元素里面如果有一个等于classname就返回真;  
            return true;
        }
    }
    return false;
} 
封装getByClass(JS获取class的方法封装为一个函数)的更多相关文章
- 兼容各版本浏览器,封装原生Js获取ClassName
		web前端开发工作中常常会用到获取元素的className,用jQuery的$(".class")方法也可以获取className,但是有时候牵扯到数据而影响的加载顺序的原因会获取 ... 
- 原生js获取鼠标坐标方法全面讲解-zmq
		原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ... 
- js获取域名的方法
		本文实例讲述了js获取域名的方法.分享给大家供大家参考.具体实现方法如下: 复制代码代码如下: <script>//获取域名var k_host = window.location.hos ... 
- JS1 js获取dom元素方法
		js获取dom元素方法 1.通过ID选取元素(getElementById) 1)使用方法:document.getElementById("domId") 其 ... 
- 【功能代码】---4用JS获取地址栏参数方法
		用JS获取地址栏参数方法 // 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new Reg ... 
- 使用JS获取当前地理位置方法汇总
		使用JS获取当前地理位置方法汇总 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014-12-18我要评论 这篇文章主要介绍了使用JS获取当前地理位置方法汇总,需要的朋友可以参考下 ... 
- 【JS】---4用JS获取地址栏参数方法
		用JS获取地址栏参数方法 // 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new Reg ... 
- js 检查登录态方法封装(闭包、状态缓存)
		前端页面开发时,经常需要异步校验登录态,每次都重新copy之前写的方法,比较繁琐不好维护,固将登录态校验封装成一个js. (function(){ //登录状态 1 登录态有效 2 登录态无效 3 请 ... 
- iOS  OC和JS的交互 javaScriptCore方法封装
		一.javaScriptCore javaScriptCore是一种JavaScript引擎,主要为webKit提供脚本处理能力,javaScriptCore是开源webkit的一部分,他提供了强大的 ... 
随机推荐
- ABAP CDS ON HANA-(11)ABAP CDSでの関連付け
			Association in ABAP CDS An association in CDS view joins different data sources. Defining and using ... 
- python2.7练习小例子(十七)
			17):题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制. 程序分析: ... 
- 转载:BUG定位
			1.web前端 Web前端就是通常说的网页.互联网公司的前端一般包含如下内容:JavaScript.ActionScript.CSS.HTML(..ML).Flash.交互式设计.视觉设计 web前端 ... 
- 4368: [IOI2015]boxes纪念品盒
			4368: [IOI2015]boxes纪念品盒 链接 分析 链接 代码 #include<bits/stdc++.h> using namespace std; typedef long ... 
- linux安装oracle远程客户端
			文章参考:http://blog.csdn.net/caomiao2006/article/details/11901123 感谢博友分享O(∩_∩)O~ 安装oracle 远程客户端(一般情况下本地 ... 
- IDLE激活方法
			激活流程 一.通过Activation code 方式激活, 注册码获取地址为:http://idea.lanyus.com/ 在idea或者pycharm的Activation code中输入 注册 ... 
- Excel拼接字符串
			有时候,需要把一些Excel表格中的内容进行拼接,比如A4行的值是前面三行值的加起来.在Excel中可以使用&来进行这种操作.如果数据非常多,就可以使用这个来进行批量操作. 
- 多个Target的使用
			背景介绍 开发过程中,我们会在内网搭建一个测试服务器,开发.测试都是在内网进行的.这样产生脏数据不会影响外网的服务器.外网服务器只有最后发布时才会进行一些必要的测试. 还有就是要对同一份代码生成不同的 ... 
- Halcon环境搭建
			1.Visual Studio 2017安装教程 2.Qt5.9安装教程 3.VS2017中Qt插件安装教程 
- 6.爬虫 requests库讲解 总结
			requests库的总结: 用ProcessOn根据前面的几节内容做了个思维导图: 
