> 正しい書き方
HTML と違い、DOM は実装の拡張を認めてるんだけど(そうでないといろいろ厳しい)。
個人的な見解ならば、そもそも安易に文字列操作すべきではない。せっかくタグ付き文字列(XML/HTML ドキュメント)をパースしてオブジェクトツリー(DOM ドキュメント)に変換したのに、もう一度タグ付き文字列に戻すというのは、相当の理由がなければならない。
DOM Level 3 Load and Save(現状 Opera のみ):var node = document.getElementById ('table1');
if (document.implementation &&
// document.implementation.hasFeature ('Core', '3.0') &&
document.implementation.hasFeature ('LS', '3.0')
) {
var serializer = document.implementation.createLSSerializer ();
// 出力形式の制御
// serializer.domConfig.setParameter ('canonical-form', true);
// serializer.domConfig.setParameter ('format-pretty-print', true);
// serializer.newLine = '\u000c\u000a';
var result = serializer.writeToString (node);
}
XMLSerializer(Firefox、Opera、Safari):var node = document.getElementById ('table1');
if (typeof XMLSerizlier != 'undefined') {
var serializer = new XMLSerializer;
var result = serializer.serializeToString (node);
}
HTMLElement.outerHTML(IE、Opera、Safari)var node = document.getElementById ('table1');
if ('outerHTML' in node) {
var result = node.outerHTML; // 出力形式は実装依存
}
なお、HTMLElement.innerHTML に関しては、IE 以外でも Firefox、Opera、Safari で (X)HTML ドキュメントを扱う場合なら使用できる。ただし、出力形式は実装依存。特に table 要素の場合、例えば tbody 要素のタグを書き出すかどうか、なんてのは予測できない(DOM3 LS はその制御も可能だが、対応ブラウザがほとんどない)。
まあ、もともと入出力関連は実装依存の部分が大きいから。