2009-08-15 54 views
5

因此,首先我要學習JS,在我知道我需要的所有內容之前不會使用庫。Javascript IE和getElementsByClassName問題

http://www.tombarrasso.com/search/

雖這麼說,爲什麼在地球上我的代碼不< IE 7中運行,火狐< 3,等等? Safari 4是完美的,Firefox 3.5很棒,等等。 我使用Robert Nyman的函數getElementsByClassName。

它在OS X上的IE 6(通過Wine)中不會產生錯誤。 Ajax請求很好,但應該有一個id =「one」和class =「scroller」的初始div,但沒有。 我對此感到非常沮喪。

感謝,

  • 湯姆
+0

你能發佈碼?不知道在哪裏可以找到它:D – 2009-08-15 01:41:15

+0

http://www.tombarrasso.com/search/x.js – Tom 2009-08-15 13:54:14

+1

事實證明.setAttribute(「class」,「scroller」)對一些IE不好,所以我還需要.setAttribute(「className」,「scroller」)。此外,我需要將所有.appendChild()添加到一行中,因爲IE不會將它從一個保存到另一個。但是IE 8和IE 7並沒有遵守這些規定。 – Tom 2009-08-15 14:55:58

回答

4

就個人而言,我只想用jQuery的,因爲它已經在運行到瀏覽器的兼容性問題。

學習這一切都很好;但是當處理實現兼容性時,最好爲你處理,恕我直言。有一些我不關心的東西:P

2

當我們在javascript中使用getElementsByClassName時,IE8給出錯誤 - 「對象不支持屬性或方法」。試試這個。

if (document.getElementsByClassName) { 
    var obj = document.getElementsByClassName('classA'); 
} 
0

我用jQuery修復了我用ie7支持那些反向客戶端的問題。

老:

var editrow = grid.get_element().getElementsByClassName("rgEditRow")[0]; 

新:

var editrow = $(".rgEditRow", grid.get_element())[0]; 
8

..或者你可以使用這個作爲一個更好的解決辦法...

if (typeof document.getElementsByClassName!='function') { 
    document.getElementsByClassName = function() { 
     var elms = document.getElementsByTagName('*'); 
     var ei = new Array(); 
     for (i=0;i<elms.length;i++) { 
      if (elms[i].getAttribute('class')) { 
       ecl = elms[i].getAttribute('class').split(' '); 
       for (j=0;j<ecl.length;j++) { 
        if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) { 
         ei.push(elms[i]); 
        } 
       } 
      } else if (elms[i].className) { 
       ecl = elms[i].className.split(' '); 
       for (j=0;j<ecl.length;j++) { 
        if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) { 
         ei.push(elms[i]); 
        } 
       } 
      } 
     } 
     return ei; 
    } 
}