解決ie8(及其以下)不支持getElementsByClassName的問題


這篇技術筆記與大家分享的是:解決IE8(及以下)不支持getElementsByClassName的方法。如果有說錯的地方,麻煩留言告訴我,我及時更正,一來是更新一下我的認知,二來也是不要誤導的他人,謝謝。

我們在給元素設置樣式的時候,可以說用的最多的就是類(class)了。遺憾的是在低版本IE瀏覽器(IE8及其以下版本)中,我們不能用getElementsByClassName,因為IE沒有為document對象添加這個方法。

// IE8及其以下版本中 這個結果是false
console.info('getElementsByClassName' in window.document);

下面,分享一下我的getElementsByTagName的兼容寫法:

 

    /* 參數說明: obj參數:一個DOM對象,getClass函數會取得這個對象下的全部元素節點。 sClass:一個字符串,獲取元素的類(class)名。 */
    function getClass(obj,sClass){ // 准備一個數組 做為函數調用的結果返回
        var aResult = []; // 如果docuemnt對象中有getElementsByClassName這個方法 我們就用瀏覽器提供的 
       因為瀏覽器提供的效率更高
if('getElementsByClassName' in document){ aResult = obj.getElementsByClassName(sClass); } // 如果瀏覽器沒有 那么我們自己來實現 總共4步 else{ //1.獲取obj下所有的元素 var aEle = obj.getElementsByTagName('*'); //2.用for循環來檢查每個子元素 for( var i=0; i<aEle.length; i++ ){ // 3.得到每個子元素className值 這個值是字符串 var str = aEle[i].className; // 4.如果該元素的class屬性有我們需要的class 那么把它放進aResult if(str.indexOf(sClass)!=-1){ aResult.push(aEle[i]); } } } return aResult; }

 


免責聲明!

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



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