您不能使用innerHTML属性在IE中编写表的某些部分,您必须使用DOM方法。 innerHTML可用于写入整个表格或单元格的内容。
在MSDN上有一个示例:Building Tables Dynamically。
还有在MDN一个例子:因为它创造了整个表
// create table
var html = "<table id='table1'><tbody><tr><td>Test</td></tr></tbody></table>";
document.getElementById('div1').innerHTML = html;
这工作正常:Using the DOM Table Interface
在你发布在其他地方的代码(好得多它张贴在这里)。
// 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;
只能分配给单元格的内部HTML(td或th),而不能分配给表的任何其他部分。
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修改单元格内容。
你的代码没有意义。 'var s = tr.innerHTML; tr.innerHTML = s'。将内部html设置为某些内容,将tr设置为自身,然后使用固定字符串摧毁所有内容和东西? –
我给出了这个上下文,以便你很容易看到这个问题。首先,tr.innerHTML是有效的HTML - >我将它分配给变量's'。在我没有任何改变的情况下重新分配给tr.innerHTML之后。显然,tr.innerHTML有变化。我不知道为什么。 –