2011-08-04 74 views
0

为什么此示例代码在IE7上不起作用。哪里有问题?谢谢。HTML Dom操纵: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元素),或使用:

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

    // create rows, cells, etc. 

    tbody.appendChild(line); 
} 

注意,与行中的所有表都将有一个tbody元素,即使标签是标记可选的(即您的标记没有tbody元素,但DOM中的表将会有一个)。

有关于使用DOM表方法的MDN教程:https://developer.mozilla.org/en/Gecko_DOM_Reference/Examples#Example_8:_Using_the_DOM_Table_Interface

+0

非常感谢。有用! – maxy56