zoukankan      html  css  js  c++  java
  • 封装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');//正则表达式,是单词分界处,

    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;
    }
     
     
  • 相关阅读:
    根据年月日算出当前日期是星期几
    告别where 1=1 最佳方案分享
    服务器时间,剩余天、小时、分、秒倒计时代码
    分享一个Web弹框类
    从网上搜集了两篇关于数据库分页性能分析总结
    Request、Request.Form和Request.QueryString的区别
    LINQ to SQL语句之Join和Order By
    List转换成Json、对象集合转换Json等
    GRID控件删除之前确认
    LeetCode 141
  • 原文地址:https://www.cnblogs.com/theWayToAce/p/5268859.html
Copyright © 2011-2022 走看看