2

少し奇妙です......IE8のクァークズモードまたは互換表示モードで実行している場合、次のコードで追加されたテーブルはレンダリングされません。それは私には明らかではないので、誰かが理由を教えてもらえますか..?

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function AddTable()
{
  var table = document.createElement('table');
  var row = document.createElement('tr');
  table.appendChild(row);
  var cell = document.createElement('td');
  cell.innerHTML='abc';
  row.appendChild(cell);
  var divContainer = document.getElementById('divContainer');
  divContainer.appendChild(table);
}
</script>
</head>
<body>
<div id='divContainer'>
</div>
<input type='button' value='add table' onclick='javascript:AddTable()' />
</body>
</html>
4

2 に答える 2

5

tbody要素を追加してみてください

それ以外の

  var row = document.createElement('tr');
  table.appendChild(row);

行う

  var tbody = document.createElement('tbody');
  var row = document.createElement('tr');
  tbody.appendChild(row);
  table.appendChild(tbody);
于 2010-03-09T09:06:05.620 に答える
5

Microsoftには、何が起こっているのかを明らかにするページがあります。

http://msdn.microsoft.com/en-us/library/ms532998(VS.85).aspx#TOM_Create

テーブルを動的に構築するために、彼らは「テーブルオブジェクトモデル」を提唱しています。これは、のようなメソッドを使用して、DOMメソッドinsertRow()やでinsertCell()行っている作業を実行します。DOMメソッドを使用する場合も問題ありませんが、「Internet Explorerでは、DOMを使用するときにtBody要素を作成してテーブルに挿入する必要があります。ドキュメントツリーを直接操作しているため、InternetExplorerはtBodyを作成しません。 HTMLを使用すると、自動的に暗示されます。」createElement()appendChild()

テーブルオブジェクトモデルは、私がテストしたいくつかのブラウザ(MacではChromeとFirefox)で動作するため、慣れることは悪い考えではないかもしれません。または、DOMメソッドを使い続けたい場合は、tBodyIEで必要になるため、要素を追加します。

メソッドの最後に次のコードを追加するとAddTable()、2つがどのように比較されるかがわかります(主に、2番目のテーブルにはが含まtBodyれます)。そしてそれはIE8でレンダリングされます。

 // now the Table Object Model way
  table = document.createElement('table');
  row = table.insertRow(-1) ;
  cell = row.insertCell(-1) ;
  cell.innerHTML='def';
  divContainer.appendChild(table);

お役に立てれば。

于 2010-03-24T05:28:29.983 に答える