テーブルにバインドすることはできますが、セル間のスペース (行またはセル インデックスがない) 内をクリックする可能性があります。以下の例では、セル自体にバインドすることを決定したため、常に行とセルのインデックスを保持します。
var tbl = document.getElementsByTagName("table")[0];
var cls = tbl.getElementsByTagName("td");
function alertRowCell(e){
var cell = e.target || window.event.srcElement;
alert( cell.cellIndex + ' : ' + cell.parentNode.rowIndex );
}
for ( var i = 0; i < cls.length; i++ ) {
if ( cls[i].addEventListener ) {
cls[i].addEventListener("click", alertRowCell, false);
} else if ( cls[i].attachEvent ) {
cls[i].attachEvent("onclick", alertRowCell);
}
}
デモ: http://jsbin.com/isedel/2/edit#javascript,html
テーブル自体にも安全にバインドし、ソース要素に対してチェックを実行して、それがセルであるかどうかを確認できると思います。
var tbl = document.getElementsByTagName("table")[0];
function alertRowCell (e) {
var cell = e.target || window.event.srcElement;
if ( cell.cellIndex >= 0 )
alert( cell.cellIndex + ' : ' + cell.parentNode.rowIndex );
}
if ( tbl.addEventListener ) {
tbl.addEventListener("click", alertRowCell, false);
} else if ( tbl.attachEvent ) {
tbl.attachEvent("onclick", alertRowCell);
}
デモ: http://jsbin.com/isedel/5/edit