有点奇怪......如果在 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>
微软有一个页面可以说明正在发生的事情。
http://msdn.microsoft.com/en-us/library/ms532998(VS.85).aspx#TOM_Create http://msdn.microsoft.com/en-us/library/ms532998(VS.85).aspx#TOM_Create
为了动态构建表,他们提倡“表对象模型”,它使用类似的方法insertRow()
and insertCell()
使用 DOM 方法完成您正在做的工作createElement()
and appendChild()
。如果你使用 DOM 方法也可以,但是“Internet Explorer 要求您在使用 DOM 时创建一个 tBody 元素并将其插入表中。由于您直接操作文档树,因此 Internet Explorer 不会创建 tBody,这在使用 HTML 时会自动暗示。”
表对象模型可以在我测试过的几个浏览器(Mac 上的 Chrome 和 Firefox)中运行,因此熟悉它可能不是一个坏主意。或者,如果您想坚持使用 DOM 方法,请添加tBody
元素,因为 IE 需要它。
如果您将以下代码添加到您的末尾AddTable()
方法,您将看到两者如何比较(主要是,第二个表将有一个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);
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)