JavaScriptでTableを作成

JavaScriptでtableを作成するにはtbodyを作成して
その中にtrを作成しなければならないらしい。
で、そのtrの中にthやらtdを入れるんだと。
散々試してみて駄目だったので、検索してみたらtbodyを作成してないからだった。

//table、tbody、tr、tdのエレメント?を作成
var otable = ce("table", "");
var otbody = ce("tbody", "");
var otr = ce("tr", "");
var otd1 = ce("td", "aaa");
var otd2 = ce("td", "bbb");

//第1引数の中にある第3引数の前に第2引数を入れる
ins(document.body, otable, null);
ins(otable, otbody, null);
ins(otbody, otr, null);
ins(otr, otd1, null);
ins(otr, otd2, otd1);

function ce(t, txt) {
    var el = document.createElement(t);
        if (txt) {
            var str = document.createTextNode(txt);
            ins(el, str, null);
        }
    return el;
}
function ins(a, b, c) {
    a.insertBefore(b, c);
}

appendChildでもできるが、insertBeforeを使って作成してみた。
これは、第1引数の中の第3引数の前に第2引数を作成するようで
第3引数にnullを指定すると、第1引数の中の最後に作成されるらしい。
↑の場合、2個目のtdが1個目のtdの前に作成される。


それにしてもtbodyってなんだ?
見掛けた事はあったが、まぁ飾りのようなもんだろうと思っていた。
はてなダイアリーはtbodyを書いていなくても
登録した時点で、自動的にtbodyが入るみたいだ。