続・JavaScript DOM table.rows、row.cells
だぶだぶノート » JavaScript DOM table.rows、row.cells
その後の調べにより、
table.rows.item(0).cells.item(0)
という書き方が出来るとわかったので早速試してみると、Firefox2.0、Opera9、Safari3で問題なさそう。
Safari1.0では、<th>と<td>が混在する行で、行の全てのセルを取れないらしい。
IE7では、item()未対応。
ただし、IE、Safariともに、rows[0].cells[0]という書き方は可能。
Safari1.0はXMLHttpRequest未対応なので、そろそろ除外しても良さそうだが、IE7が未対応は痛い。
結局rows、cellsという書き方では、ブラウザごとの分岐はさけられないようだ。
ちなみにIEでは、1列目にrowspan=”2″が指定されていると、getElementsByTagName(‘tr’)[0]で取得出来るのは、その2列分、もしくは取得不可になってしまう。
getElementsByTagName(‘td’)では<th><td>混在行で全セルを取得出来ないし、getElementsByTagName(‘*’)ではセルの中で<span>でも使っていればそれも取得してしまう。
でもまぁ、getElementsByTagName(‘*’)で取得して、nodeNameがthかtdかというのを判断しておくのが一番無難なような気がする。
2007/12/27 追記
その後の調べ2