2013-03-11 41 views
-2

我做了一個腳本來爲行的表格着色。我的腳本只適用於Internet Explorer 8或更高版本。我如何製作腳本交叉瀏覽器?JavaScript Crossbrowser

window.onload = (function() 
{ 
    "use strict"; 
    var c = 0, i, j, t = document.getElementsByTagName("tbody"), r; 
    for(i = 0; i < t.length; i++) 
    { 
     r = t[i].getElementsByTagName("tr"); 
     for(j = 0; j < r.length; j++) 
     { 
      if(c%2 === 1) 
      { 
       r[j].setAttribute("class", "colored"); 
      } 
      c++; 
     } 
     c = 0; 
    } 
}); 
+1

究竟是不是在其他瀏覽器(S)什麼錯誤信息的工作是什麼(S) ? – 2013-03-11 13:28:24

+1

你使用jQuery或其他庫嗎? – 2013-03-11 13:28:52

+0

我修改了代碼,刪除了jQuery。 我的腳本不會將該類添加到Internet Explorer 7中帶有「tr」字樣的元素。 在我的css中有。彩色td {background-color:#F9F9F9;},這樣必要的元素「tr」才能獲得彩色類。 – user2047493 2013-03-11 13:34:48

回答

3

變化

r[j].setAttribute("class", "colorful"); 

r[j].className = "colorful"; 

IE有越來越setAttribute錯了,在它得到它錯了涉及class屬性的方式之一的歷史。 (在早期版本中,即使該屬性被稱爲class,他們希望你使用setAttribute,這僅僅是完全錯誤的,當調用它className甚至其他的瀏覽器,以及更近的IE版本,得到它的權利。)

幸運的是,class屬性在名爲className(在所有瀏覽器中)的元素上可靠地反映爲屬性,因此您可以通過轉向反射屬性來代替IE的setAttribute問題,如上所示。

(同樣的事情發生與label元素for屬性,僅供參考;使用htmlFor反映屬性代替)

+0

謝謝! 這就是缺少的。 – user2047493 2013-03-11 13:36:17

+0

@ user2047493:不客氣!很高興這有幫助。 – 2013-03-11 13:36:50