About getByClass

不能获取class为多个的情况

function getByClass(parent,cls){
    var res=[];
    var ele=parent.getElementsByTagName("*");
    for(var i=0;i<ele.length;i++){
        if(ele[i].className==cls){
            res.push(ele[i]);
        }
    }
    return res;
}

\b 把除字母、数字、下划线的其它字符都当成是边界,当class为像abc-test时可能获取不准确

function getByClass(parent,cls){
    var res=[];
    var reg=new RegExp("\\b"+cls+"\\b",i);
    var ele=parent.getElementsByTagName("*");
    for(var i=0;i<ele.length;i++){
        if(reg.test(ele[i].className)){
            res.push(ele[i]);
        }
    }
    return res;
}

有空格

function getByClass(parent,cls){
    var res=[];
    var reg=new RegExp(" "+cls+" ",i);
    var ele=parent.getElementsByTagName("*");
    for(var i=0;i<ele.length;i++){
        if(reg.test(" "+ele[i].className+" ")){
            res.push(ele[i]);
        }
    }
    return res;
}

空格使用正则来处理

function getByClass(parent,cls){
    var res=[];
    var reg=new RegExp(‘(^|\\s)‘+cls+‘($|\\s)‘,‘i‘);
    var ele=parent.getElementsByTagName("*");
    for(var i=0;i<ele.length;i++){
        if(reg.test(ele[i].className)){
            res.push(ele[i]);
        }
    }
    return res;
}

结合getElementsByClassName()

function getByClass(parent,cls){
    if(parent.getElementsByClassName){
        return parent.getElementsByClassName(cls);
    }
    else{
        var res=[];
        var reg=new RegExp(" "+cls+" ","i");
        var ele=parent.getElementsByTagName("*");
        for(var i=0;i<ele.length;i++){
            if(reg.test(" "+ele[i].className+" ")){
                res.push(ele[i]);
            }
        }
        return res;
    }
}
时间: 2024-11-04 17:12:51

About getByClass的相关文章

原生JavaScript实现的addclass,removeclass,hasclass,toggleclass,getbyclass

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>addclass,removeclass,hasclass,toggleclass,getbyclass</title> </head> <body> <div class="div1" id="b

js getByClass函数封装

1 function getByClass(oParent, sClass) 2 { 3 var aEle=oParent.getElementsByTagName('*'); 4 var aResult=[]; 5 var i=0; 6 7 for(i=0;i<aEle.length;i++) 8 { 9 if(aEle[i].className==sClass) 10 { 11 aResult.push(aEle[i]); 12 } 13 } 14 15 return aResult; 16

兼容低版本ie的getByClass方法

ecma5为我们提供了实用的getElementsByClassName()方法;可惜这个方法在低版本ie下直接挂掉了. 在不依赖jq的前提下自己实现了一下方法, function getByClass(oParent,sClass){ if(oParent.getElementsByClassName){ //本除返回的是dom集合,类数组而非数组 return oParent.getElementsByClassName(sClass); } var result = []; var re

getByClass函数——正则版

function getByClass(oParent,sClass){ var arr = []; var aEle = oParent.getElementsByTagName('*'); //var re = /sClass/; //当正则需要传参的时候,一定要用全称的写法 var re = new RegExp('\\b'+sClass+'\\b'); for(var i=0;i<aEle.length;i++){ if( re.test(aEle[i].className) ){ ar

removeClass,addClass,getByClass

addClass: function addClass(obj, sClass){ var re=new RegExp('\\b'+sClass+'\\b'); if(obj.className.search(re)==-1){ if(obj.className) { obj.className+=' '+sClass; }else{ obj.className=sClass; } } } removeClass: function removeClass(obj, sClass){ var r

通过正则写一个较为完美的getByClass函数

getByclass传入两个参数,oParent是父集,sClass是要传入class名称 1 function getByClass(oParent,sClass){ 2 var aChild = oParent.getElementsByTagName("*"), 3 result = []; 4 for(var i =0;i<aChild.length;i++){ 5 if(aChild[i].className.match(new RegExp("(\\s|^)

原生js实现增加(addclass),删除(removeclass),判断是否存在(hasclass),如果存在删除,如果不存在添加(toggleclass)和获取类名(getbyclass)的方法

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>addclass,removeclass,hasclass,toggleclass,getbyclass</title> </head> <body> <div class="div1" id="b

封装getByClass

封装getByClass                                    function findInArr(n,arr){                                                for(var i = 0 ;i < arr.length; i++){                                                    if(n == arr[i]){                        

js最基础知识回顾6(数组,JSON,getByClass,select,Math对象)

一.数组的相关操作 1. 定义 (1)var arr=[1,'abc',function(){alert(3333);},[333,444]]; (2)var arr=new Array(12,5,8,9);   如果只放一个数字,要设定length (3)[]的性能略高,因为代码短 2. 属性----length(既可以获取,又可以设置)---例子:快速清空数组 var a=[1,2,3,4,5,6,]; a.length=0; alert(a); (1)如果设置的length多于数组的内容,