2011-08-04 13 views
0

IE7でこのコードサンプルが動作しないのはなぜですか?問題はどこだ?ありがとう。 IEで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

あなたは直接ではなく、テーブルに、TBODYにテーブルの行を追加する必要があります。また、一部のブラウザでは、DIVタグとTABLEタグの間に空白がある場合、divの最初の子がテキストノードになります。だから、テーブル(またはTBODY要素)にIDを移動、または使用のいずれか:

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

    // create rows, cells, etc. 

    tbody.appendChild(line); 
} 

注行のすべてのテーブルは、タグは、マークアップではオプションであっても、TBODY要素を持っていること(つまり、あなたのマークアップtbody要素はありませんが、DOMのテーブルには1つの要素があります)。

DOMテーブルメソッドの使用についてMDNに関するチュートリアルがあります:https://developer.mozilla.org/en/Gecko_DOM_Reference/Examples#Example_8:_Using_the_DOM_Table_Interface

+0

ありがとうございました。できます! – maxy56