javascript - 关于正则的一个困惑
怪我咯
怪我咯 2017-04-10 15:42:09
[JavaScript讨论组]
function getclass(parent,classname){
    var tags=parent.getElementsByTagName('*');
    var temp=[];
    for(var i=0;i<tags.length;i++){
        if(tags[i].className.match(new RegExp("\\s+|^"+classname+'$|\\s+'))){
            temp.push(tags[i]);
        }
    }
    return temp;
}


为什么这个函数会获取parent下所有的节点?正则哪里写错了吗?
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
高洛峰

如果你只是想找 class,可以用 classList,比如

if (tags[i].classList.contains(classname)) {
    temp.push(tags[i])
}

另外,你取 temp 那里可以用 filter 简化

var temp = [].filter.call(tags, function(t) {
    return t.classList.contains(classname);
});

改过之后完整的代码

function getByClass(parent, classname) {
    var tags = parent.getElementsByTagName('*');
    return [].filter.call(tags, function(t) {
        return t.classList.contains(classname);
    });
}

但其实有更简单的办法可以处理

function getByClass(parent, classname) {
    return parent.querySelectorAll("." + classname);
}
ringa_lee

这个就是获取parent下所有节点啊,你的实际想法是什么?‘*’是全部匹配

PHP中文网

你是想要取得给出classname的child节点吧?

为何要使用正则?,className已经是一个字符串了,直接判断indexOf不就可以了?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号