2013-03-11 4 views
-2

테이블의 색상을 지정하는 스크립트를 만들었습니다. 내 스크립트는 Internet Explorer 8 이상에서만 작동합니다. 스크립트 크로스 브라우저를 만들려면 어떻게해야합니까?자바 스크립트 크로스 브라우저

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

(들) ? –

+1

jQuery 또는 다른 라이브러리를 사용하고 있습니까? –

+0

코드를 수정하고 jQuery를 제거했습니다. 내 스크립트는 Internet Explorer 7에서 "tr"로 채색 된 요소에 클래스를 추가하지 않습니다. 내 CSS에는 있습니다. Colored td {background-color : # F9F9F9;}, 색칠 된 클래스를 얻는 데 필요한 요소 "tr". – user2047493

답변

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

+0

@ user2047493 : 환영합니다! 도움이 된 것을 기쁘게 생각합니다. –

관련 문제