2011-08-04 6 views
0

IE7에서이 코드 샘플이 작동하지 않는 이유는 무엇입니까? 문제가 어디에 있습니까? 감사.HTML 돔 조작 : IE7 문제

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
     <title>Test</title> 

     <script language="javascript" type="text/javascript"> 

      function initialize() 
      { 
       for(var i=0; i < 10; i++) 
       { 
        var tab = document.getElementById("search").childNodes[0]; 
        var line = document.createElement("tr"); 
        var column = document.createElement("td"); 
        column.appendChild(document.createTextNode("DATA")); 
        line.appendChild(column); 
        tab.appendChild(line); 
       } 
      } 

     </script> 
    </head> 
    <body onload="initialize()"> 
     <div id="search" class="bulle"><table><tr><td></td><td align="right">X</td></tr><tr><td><table id="tableResult"><table></td><td></td></tr></table></div> 
    </body> 
</html> 
+0

표시되는 오류는 무엇입니까? 아니면 경고가 있습니까? 더 많은 정보를 추가하십시오! – Vijay

답변

2

IE에서는 테이블 행을 표에 직접 추가하지 말고 tbody에 표 행을 추가해야합니다. 또한 일부 브라우저에서는 태그의 DIV와 TABLE 태그 사이에 공백이 있으면 div의 첫 번째 자식이 텍스트 노드가됩니다. 그래서 어느 테이블에 ID (또는 TBODY 요소), 또는 사용을 이동 : 행의 모든 ​​테이블이 태그 (즉, 마크 업 마크 업의 선택에도 불구하고 TBODY 요소가됩니다

function initialize() { 
    var div = document.getElementById("search"); 
    var tbody = div.getElementsByTagName('tbody')[0]; 

    // create rows, cells, etc. 

    tbody.appendChild(line); 
} 

주 tbody 요소는 없지만 DOM의 테이블에는 하나의 요소가 있습니다.

DOM 테이블 방법 사용에 대한 MDN에 대한 자습서가 있습니다. https://developer.mozilla.org/en/Gecko_DOM_Reference/Examples#Example_8:_Using_the_DOM_Table_Interface.

+0

고마워. 그것은 작동합니다! – maxy56