關於HTML中,如何根據元素的className獲取元素?


  getElementsByClassName()是HTML5 新增的DOM API。IE8以下不支持
  我們知道,原生的方法,是getElementById()和getElementsByTagName(),這兩個不會有兼容問題,但是遇到class的問題還是沒法解決。所以這里總結兩種封裝方法,可以用它們來獲取指定的class元素。當然,對於現代瀏覽器開發,還可以使用querySelector()和querySelectorAll(),他們的功能更加強大。

1.數組遍歷的方法:

 1 function getByClass(sClass,oParent){
 2         
 3     var parent = oParent || document;
 4     var aEles = parent.getElementsByTagName('*');
 5     var arr = [];
 6     
 7     for(var i=0; i<aEles.length; i++){
 8         
 9         var aClass = aEles[i].className.split(' ');
10         
11         for(var j=0; j<aClass.length; j++){
12             if(aClass[j] == sClass){
13             
14                 arr.push(aEles[i]);
15                 
16             }    
17         }
18     }
19     return arr;
20 }

 

2.正則匹配的方法

 1 function getElementsByClassName(oParent, sClass){
 2     var aEle = oParent.getElemnetsByTagName('*');
 3     var result = [];
 4     var re = new RegExp('\\b' + sClass + '\\b', 'i');
 5     
 6     for(var i=0; i<aEle.length; i++){
 7         if(re.test(aEle[i].className)){
 8             result.push(aEle);    
 9         }    
10     }
11     return result;
12 }

  最后,值得一提是,前端頁面實現中,性能的影響往往出現在DOM的操作中。此外,還要注意元素的回流和重繪問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM