首页 新闻 会员 周边 捐助

请问原生javascript中如何根据class名称获取元素?

0
悬赏园豆:5 [已解决问题] 解决于 2012-05-16 13:50

请问原生javascript中如何根据class名称获取元素,有没有高效的做法?

草根程序猿的主页 草根程序猿 | 初学一级 | 园豆:129
提问于:2012-05-16 11:55
< >
分享
最佳答案
1
//后两个参数可省略
function (name, type, parent) {
            var tempElems = [];
            var pattern = new RegExp("(^| )" + name + "( |$)");
            var e = (parent || document).getElementByTagName(type || "*");
            for (var i = 0; i < e.length; i++) {
                if (pattern.test(e[i].className)) {
                    tempElems.push(e[i]);
                }
            }
            return  tempElems;
}
收获园豆:5
artwl | 专家六级 |园豆:16736 | 2012-05-16 13:12
其他回答(3)
-2

jquery做笔记简单。$(".class名称")

贺从海 | 园豆:90 (初学一级) | 2012-05-16 11:56
0

jquery是最简单的方案,此外,就得你自己去研究了,从DOM入手,或者去分析JQUERY的代码。

无之无 | 园豆:5095 (大侠五级) | 2012-05-16 12:19
1

主要还是先查找父容器的ID,然后是标签名,接着才是class。

function getClass(str, root, tag) {
            if (root) {
                root = typeof root == "string" ? document.getElementById(root) : root;
            } else {
            root = document.body;
            }
            tag = tag || "*";
            var els = root.getElementsByTagName(tag), arr = [];
            for (var i = 0; i < els.length; i++) {
                for (var j = 0; k = els[i].className.split(" "), j < k.length; j++) {
                    if (k[j] == str) {
                        arr.push(els[i]);
                        break;
                    }
                }
            }
            return arr;
        }
icepy | 园豆:587 (小虾三级) | 2012-05-16 13:22

这里用正则匹配className更方便一些

支持(0) 反对(0) 草根程序猿 | 园豆:129 (初学一级) | 2012-05-16 13:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册