2012-07-15 66 views

回答

4

第一关,您必须确定您需要支持哪个版本的IE:IE6,IE7,IE8?如果不知道这一点,我们无法真正提供最佳的选择。如果你所需要的只是IE9及以上(某些模式下也是IE8),那么你可以使用document.querySelectorAll(".classname")document.getElementsByClassName("classname")

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

这是一个很好的资源,所以你可以自己查看浏览器兼容性:http://caniuse.com/getelementsbyclassname

+0

为什么downvote? – jfriend00 2013-10-04 23:58:36

+0

为什么还有一个downvote?这里发生了什么?这个答案是在16个月前写的。 – jfriend00 2013-10-05 02:23:32

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)

+0

1 - 'document.querySelectorAll(“类名‘)'在比'document.getElementsByClassName(’类名”)' – 2012-07-15 23:57:44

+2

IE 8不支持在QSA怪异模式更浏览器所支持,所以它可能是确定您知道该页面处于标准模式,但不以其他方式。无论如何,它应该被功能测试。 – RobG 2012-07-16 00:01:21

相关问题