javascript - 拥有多个值的class的值怎么获取。
大家讲道理
大家讲道理 2017-04-11 12:56:46
0
2
315

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>
    <p id="d3">
        <span class="s3"></span>
        <span class="s3"></span>
        <span class="s3 s33"></span>
    </p>
    <script>
        var oD3=document.getElementById('d3');
        var aS3=getByClass(oD3,'s3');
        alert(aS3.length); //这种情况下aS3.length的值只有2。
    </script>
</body>
</html>
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
小葫芦

想想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;
    }
刘奇

aEle[2].className="s3 s33" 这个地方会把第三个的 "s3 s33" 同时找出来,所以aEle[2].className!=sClass 你的aResult数组里只有两项

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!