2011-04-18 59 views

回答

3
document.getElementsByClassName = function(className) 
{ 
    var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)"); 
    var allElements = document.getElementsByTagName("*"); 
    var results = []; 
    var element; 
    for (var i = 0; (element = allElements[i]) != null; i++) { 
     var elementClass = element.className; 
     if (elementClass && elementClass.indexOf(className) != -1 
      && hasClassName.test(elementClass)) 
      results.push(element); 
    } 

    return results; 
} 

基於這個職位上devshed:Get all elements of class 'abc'

+0

@hunter - 爲什麼不是最簡單的方法?爲什麼不jQuery? – 2011-04-18 17:19:24

+0

@Naveed Ahmad,提問者指定JS不是jQuery。 – 2011-04-18 17:20:31

+0

@Naveed - 這個問題被標記爲'javascript'而不是'jQuery' – hunter 2011-04-18 17:20:33

2

有一個getElementsByClassName法(主要瀏覽器的最新版本支持),返回與指定類的所有元素的列表。當然,許多用戶仍然使用舊版瀏覽器,因此更簡單的解決方案是使用jQuery等庫,並選擇帶有$('.someclass')的元素。

0

使用getElementsByClassName可能會導致IE版本出現問題。 querySelectorAll應該更廣泛地兼容。即document.querySelectorAll('。my-class')或document.querySelectorAll('div.my-class')