跨浏览器按类名选择元素

7

如何使用JavaScript选择所有具有相同类名的元素。我知道可以使用document.getElementsByClassName来实现,但我在某处读到它不是跨浏览器的,所以如果这是真的,那么除了jQuery或其他库之外,选择具有类名的元素的适当方法是什么。

谢谢!


2
相信我,当我说你不是第一个问这个问题的人时... http://www.google.co.uk/search?q=select+by+class+name+javascript - Matt
1
@Raj 试试使用querySelectorAll(),它比getElement...()更好、更灵活。 - Christoph
3个回答

8
我找到了这段代码:
if (!document.getElementsByClassName) {
    document.getElementsByClassName = function(classname) {
        var elArray = [];
        var tmp = document.getElementsByTagName("*");
        var regex = new RegExp("(^|\\s)" + classname + "(\\s|$)");
        for (var i = 0; i < tmp.length; i++) {

            if (regex.test(tmp[i].className)) {
                elArray.push(tmp[i]);
            }
        }

        return elArray;
    };
}​

Here


1

请看这里:

支持getElementsByClassName

我建议使用querySelector。它更加自然,接近jQuery语法,因此对大多数人更为常见。而且它非常快速,你不需要区分类、ID或其他内容。

如果你想要支持IE<7,你需要像gdoron提供的那样进行适配。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接