• ベストアンサー

クリックされた行を取得したい

次の処理を行いたいのですが,どのようにすればいいのでしょうか。 1.document がクリックされたときに,どの要素がクリックされたかを調べる。 2.その要素がid="tbody1"のtbodyタグ内にある場合,次の操作を行う。 3.変数trにクリックされたテーブルの行を指定する。 4.変数tdContentに先程のtr内の第一列目のセルの内容を代入する。 trタグはJavaScriptで自動生成しているので,できれば上の手順でid属性を追加せずに済むようにしたいです, 極力処理を省いたつもりなので,よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

(1) window.onload=function(){ document.body.onclick=function(e){ if(!e){ e=event; e.target=event.srcElement; } alert(e.target.tagName);//クリックされた要素 }; }; (2) td=e.target // クリックされた要素 if(td.parentNode.parentNode.id == "tbody1"){ //tbody 内にある (3) tr=td.parentNode; //クリックされた行 (4) tdContent = tr.cells[0].innerHTML;

KanjiTalk
質問者

お礼

次のようにした結果うまくいきました。本当にありがとうございます。 window.onload = function(e) { document.body.onclick = function(e) { e = event; if ("" != e) { e.target = event.srcElement; }; td = e.target if (td.parentNode.parentNode.id == "tbody1") { tr = td.parentNode; tr.style.backgroundColor = "black"; tr.style.color = "white"; tdContent = tr.cells[0].innerHTML; } } };

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

老婆心ながら >e = event; といきなり代入しちゃったら意味がないので、 調べてから代入するようにした方がいいですよ。

KanjiTalk
質問者

お礼

window.onloaad の外で e を宣言するようにしました。ありがとうございます。

関連するQ&A