スクリプトメモ » JavaScript - DOM

20080723

DOMテーブルオブジェクト

DOM によるテーブル操作のブラウザごとの互換性メモ。
面倒なのでだぶだぶOperaからブロッククオート

HTMLのテーブルの行、セル(マス)を取得するのに、table.rows、table.cellsがありますが、
HTML-DOMでは、rowsはエレメントコレクションなので、
table.rows[0].cells[0]という書き方でも、table.rows.item(0).cells.item(0)という書き方でも可能です。

ただし、OperaとIEは実装が中途半端なので、
Operaではtable.rows(0).cells(0)という書き方(関数)、
IEではtable.rows[0].cells[0]という書き方(配列)でなければ動きません。

Operaのみitem()メソッドが実装されていません。

1行中の全セルを取得するのにcellsを使うとブラウザごとに分岐させないと行けないので、getElementsByTagNameなど、標準的なDOMメソッドが使えますが、
row.getElementsByTagName('*')とすると、セルの中にやが入ってると無駄な物まで取れてしまう。
tbody.getElementsByTagName('td')やではとが混在する場合に全セルを取れません。

その対策として、row.childNodes[ ]が使えるっぽいです。

だぶだぶOpera


スクリプトチップス集 Index
Wicker Wings