IE7でJavaScriptを使ってTableにセル(td)とか入れる方法(今更編)

むかーしむかし、全部innerHTMLで済ませてて、
あるセル消そうとする時に変になったり、
ゴリゴリ書いてた記憶があるけど、
最近、tableを使う機会があって、
createElementでやるだけじゃ無理だったので、
一応メモ。


Firefox系、IE8なら動くやり方

var table = document.getElementsByTagName('table')[0];
var tr = document.createElement('tr');
table.appendChild(tr);
var td = document.createElement('td');
tr.appendChild(ts);


IE7で動くやり方

var table = document.getElementsByTagName('table')[0];
var tr = table.insertRow();
var td = tr.insertCell();


なので、どっちでも動くようにするには

function addTr(table) {
  if ($.browser.msie == true) {
    return table.insertRow();
  }
  else {
    var tr = document.createElement('tr');
    table.appendChild(tr);
    return tr;
  }
}

function addTd(tr) {
  if ($.browser.msie == true) {
    return tr.insertCell();
  }
  else {
    var td = document.createElement('td');
    tr.appendChild(td);
    return td;
  }
}

var table = document.getElementsByTagName('table')[0];
var tr = addTr(table);
var td = addTd(tr);

とか抽象化した関数作るとか。
$.browser.msiejQueryの関数だけど...


というか、jQuery使ったら

$table = $('<table></table>');
$table.append('<tr></tr>');

でよさげですよね。
げへへ。


因みに、中身のコンテキストをいじる時は
tr.innerHTMLで普通に出来た気がします(よく試してない)。


なんか文章の書き方が変だ。
まぁいいか。


以上、いつまでもJSのライブラリをちゃんと使わない
ダメプログラマーのメモでした。


ブコメのお返事

id:rikuba
insertRow(-1) insertCell(-1) で良いのでは。

これ、insertRow(-1)とかだと
trの追加するインデックス番号が-1だから先頭に追加できる、
ということですかね?
ちょっとよく分からなかったので、申し訳ないですが説明もらえると嬉しいです・・・!とかおもったり。