innerHTMLプロパティを使用してIEでテーブルの一部を書き込むことはできません。DOMメソッドを使用する必要があります。innerHTMLを使用して、テーブル全体またはセルの内容を書き込むことができます。
MSDNに例があります:動的にテーブルを構築する。
MDNの例もあります:DOMテーブルインターフェイスの使用
他の場所に投稿したコード(ここに投稿する方がはるかに良い):
// 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を使用してセルの内容を変更することもできます。