2012-07-15 67 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

相關問題