javascript - 拥有多个值的class的值怎么获取。

查看:110
本文介绍了javascript - 拥有多个值的class的值怎么获取。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

getElementsByClassName并不支持低版本的IE,所有找了个兼容的写法,
但是这个函数并不支持在class拥有多个值的情况下获取。
请问怎么可以实现。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <script>
        function getByClass(oParent, sClass){
            var aEle=oParent.getElementsByTagName('*');
            var aResult=[];

            for(var i=0;i<aEle.length;i++){
                if(aEle[i].className==sClass){
                    aResult.push(aEle[i]);
                }
            }
            return aResult;
        }
    </script>
</head>
<body>
    <div id="d3">
        <span class="s3"></span>
        <span class="s3"></span>
        <span class="s3 s33"></span>
    </div>
    <script>
        var oD3=document.getElementById('d3');
        var aS3=getByClass(oD3,'s3');
        alert(aS3.length); //这种情况下aS3.length的值只有2。
    </script>
</body>
</html>

解决方案

想想jquery不就实现了吗,那么这时就可以看源码了,改一下你的判断条件

function getByClass(oParent, sClass){
        var aEle=oParent.getElementsByTagName('*');
        var aResult=[];
        var whitespace = "[\\x20\\t\\r\\n\\f]"
        var rex=new RegExp( "(^|" + whitespace + ")" + sClass + "(" + whitespace + "|$)" )
        for(var i=0;i<aEle.length;i++){
            if(rex.test(aEle[i].className)){
                aResult.push(aEle[i]);
            }
        }
        return aResult;
    }

这篇关于javascript - 拥有多个值的class的值怎么获取。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆