getbyclass

其实以前我偷偷学习正则表达式的时候,写过一个getbyclass的方法,最近翻了翻到处都是错,或者好多重复的,没有用的 代码,于是显得没事我就把这个精简了一下,其实这个方法现在我觉得也是有问题的,问题在于我不知道原生的getElementsByClassName获取元素后生产的是不是数组,不管这个到不是重点,以后有时间了我在验证一下就可以了,另外我发现css是区分大小写的,看来没事看看正则还是能涨很多知识的,因为我感觉这次简化的时候收获比较大,于是我决定把这次也简化记录下来,反正记录不花钱。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>getbyclass</title>
<style>
.a{ color:green!important;}
</style>
</head>
<body>
<ul id="oUl">
    <li class="A">111111111111111111111</li>
    <li class="as dfd">222222222222222222222</li>
    <li class="asd ad">333333333333333333333</li>
    <li class="sdfsd dfd 22df">444444444444444444444</li>
    <li class="jhasd gksdj">555555555555555555555</li>
    <li class="asd dfgf b as era">666666666666666666666</li>
    <li class="fgfa as efgf5 fghf2asdf">777777777777777777777</li>
</ul>
</body>
</html>
<script type="text/javascript">
var oUl=document.getElementById("oUl");
var aLi=document.getElementsByTagName("li");
var as=getbyclass("as",oUl);
for(var i=0;i<as.length;i++){
    as[i].style.color="red";
}

function getbyclass(oClass,Oparent){
    var oParent=oParent||document;
    if(Oparent.getElementsByClassName){
        return Oparent.getElementsByClassName(oClass)
    }else{
        var re=[];
        var reg=new RegExp("\\b"+oClass+"\\b")
        var ch=oParent.getElementsByTagName("*");
        for(var i=0;i<ch.length;i++){
            var str=ch[i].className;
            if(reg.test(str)){
                re.push(ch[i]);
            }
        }
        return re;
    }
}
</script>

getbyclass

时间: 2024-10-11 05:31:00

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]){                        

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时可能

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多于数组的内容,