MSIE8互換モードでは、動的に作成されたテーブルをレンダリングしません
-
18-09-2019 - |
質問
ビット奇妙な... ... IE8のQuirksモードまたは互換表示モードで実行している場合は、次のコードによって追加されたテーブルは、レンダリングされません。それは私には明らかにされていませんので、誰もが、なぜ私に言うことができる..?
<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>
解決
Microsoftは何が起こっている照明することができるページがあります。
http://msdn.microsoft.com /en-us/library/ms532998(VS.85).aspx#TOM_Createする
動的彼らはあなたがDOMのmethodsinsertRow()
とinsertCell()
でやっている仕事をするためにcreateElement()
とappendChild()
のようなメソッドを使用しています「表オブジェクトモデル」を、提唱テーブルを構築するため。あなたがDOMメソッドを使用する場合にもOKですが、の「Internet ExplorerがTBODY要素を作成し、DOMを使用した場合、テーブルに挿入する必要があります。あなたが直接ドキュメントツリーを操作しているので、Internet Explorerが作成されません。 HTMLを使用したときに自動的に暗示されてTBODY、。 "の
テーブルオブジェクトモデルは、それを理解するためには悪い考えではないかもしれないので、私は、(MacのChromeとFirefoxの)でそれをテストしたブラウザのカップルで動作します。あなたがDOMメソッドに固執したい場合はIEがそれを必要とするためか、tBody
要素を追加します。
AddTable()
メソッドの最後に次のコードを追加する場合は、(主に、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);
この情報がお役に立てば幸いです。
他のヒント
タグのTBODY要素を追加してみてください
の代わりに
var row = document.createElement('tr');
table.appendChild(row);
DO
var tbody = document.createElement('tbody');
var row = document.createElement('tr');
tbody.appendChild(row);
table.appendChild(tbody);