在 IE 中不能使用 innerHTML 属性编写表格的一部分,必须使用 DOM 方法。innerHTML 可用于编写整个表格或单元格的内容。
MSDN 上有一个例子:Building Tables Dynamically。
MDN上还有一个例子:Using the DOM Table Interface
在您在其他地方发布的代码中(最好在此处发布):
// create table
var html = "<table id='table1'><tbody><tr><td>Test</td></tr></tbody></table>";
document.getElementById('div1').innerHTML = html;
这很好用,因为它创建了一个完整的表。
// append a row into table
var tr = document.createElement('tr');
var td = document.createElement('td');
td.innerHTML = 'ABC';
tr.appendChild(td);
var s = tr.innerHTML;
以上在所有浏览器中都可以正常工作。
tr.innerHTML = s;
糟糕,只能分配给单元格(td 或 th)的 innerHTML,不能分配给表格的任何其他部分。
tr.innerHTML = '<td>' + 'ABC' + '</td>';
又是一样。
var tbody = document.getElementById('table1').getElementsByTagName('tbody')[0];
您可以使用tBodies属性来简化:
var tbody = document.getElementById('table1').tBodies[0];
tbody.appendChild(tr);
如果您没有弄乱 tr 的 innerHTML,那将可以正常工作。
请注意,您还可以执行以下操作:
var tbody = document.getElementById('table1').tBodies[0];
var row = tbody.insertRow(-1);
var cell = row.insertCell(-1);
cell.innerHTML = 'whatever';
你完成了。您还可以克隆一整行,然后使用 innerHTML 修改单元格内容。