您不能使用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有變化。我不知道爲什麼。 –