2

JavaScriptgetElementById可以使用,我知道。但是怎么样getElementsByClassName?浏览器对此有何支持?

通过谷歌,我找到了各种自制的解决方案,像这样

正如你所看到的,这篇文章现在已经有四年了,这就是我问的原因。或者如果它可用,我应该只使用 jQuery 来处理类似的东西吗?

4

3 回答 3

4

只需使用document.querySelectorAll(".classname")

IE 8 支持它: http: //www.caniuse.com/#search=queryselectorall


我写了一个垫片:

if (typeof document.getElementsByClassName !== 'function') {
    HTMLElement.prototype.getElementsByClassName = function (classname) {
        return this.querySelectorAll('.' + classname);
    };
}

http://jsfiddle.net/P3P5e/1/

(在 Chrome 21 和 Opera 12.50 中测试和工作 [如果需要的话],但在 Firefox 14 中没有。我不知道它是否在 IE 中工作,因为我没有 IE。)

于 2012-07-15T23:55:07.473 回答
4

首先,您必须确定您需要支持的 IE 版本:IE6、IE7、IE8?在不知道的情况下,我们无法真正提供最佳选项集。如果您只需要 IE9 及更高版本(某些模式下也需要 IE8),那么您可以使用document.querySelectorAll(".classname")or document.getElementsByClassName("classname")

如果你需要其他版本的 IE,你不能走那条路。有getElementsByClassName()不到 30 行代码的 shims 可用于在旧版本的 IE 中为其提供支持,但在这一点上,我强烈建议您只获得一个选择器库,它可以完成所有跨浏览器支持为你。听起来您已经熟悉拥有这样一个库的 jQuery。如果您不想要/不需要 jQuery 的其余部分,您可以只获得一个选择器库。jQuery 在内部使用 Sizzle,它本身就可以使用,而且非常好。还有其他的。

这是一个很好的资源,您可以自行查找浏览器兼容性:http: //caniuse.com/getelementsbyclassname

于 2012-07-16T00:00:57.203 回答
0

IE 8不支持。​​​​​​</p>

于 2012-07-15T23:50:54.617 回答