JavaScriptgetElementById
可以使用,我知道。但是怎么样getElementsByClassName
?浏览器对此有何支持?
通过谷歌,我找到了各种自制的解决方案,像这样
正如你所看到的,这篇文章现在已经有四年了,这就是我问的原因。或者如果它可用,我应该只使用 jQuery 来处理类似的东西吗?
JavaScriptgetElementById
可以使用,我知道。但是怎么样getElementsByClassName
?浏览器对此有何支持?
通过谷歌,我找到了各种自制的解决方案,像这样
正如你所看到的,这篇文章现在已经有四年了,这就是我问的原因。或者如果它可用,我应该只使用 jQuery 来处理类似的东西吗?
只需使用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);
};
}
(在 Chrome 21 和 Opera 12.50 中测试和工作 [如果需要的话],但在 Firefox 14 中没有。我不知道它是否在 IE 中工作,因为我没有 IE。)
首先,您必须确定您需要支持的 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。
IE 8不支持。</p>