• ベストアンサー

イベントリスナーに設定した関数内で、id属性の値を取得するには

IEでイベントリスナーに設定した関数で、イベントを発生させた要素のid属性値を取得する方法が分からずに困っています。 記述したコードは下記のようになります。Firefoxではうまく動作しました。 clickHandler内でFirefoxのe.currentTarget.idに対応するような処理はどのように行えばよいでしょうか。 ------------ JavaScript部分 ----------------------- function addEvent(elm, evType, fn, useCapture) { if (elm.addEventListener) { elm.addEventListener(evType, fn, useCapture); return true; } else if (elm.attachEvent) { var r = elm.attachEvent('on' + evType, fn); return r; } else { elm['on' + evType] = fn; } } function clickHandler(e) { var id; if (document.all && !window.opera) { // IEの場合に、ここの処理でid属性の属性地 hoge1やhoge2を取得したい。 // id = window.event.srcElement.id; これではだめ } else { id = e.currentTarget.id; } // idに応じた処理 } var elm1 = document.getElementById('hoge1'); var elm1 = document.getElementById('hoge2'); addEvent(elm1,'click',clickHandler,false); addEvent(elm2,'click',clickHandler,false); ------------ HTML部分 ----------------------- <li><a id="hoge1" href="#"><img src="●●" /></a></li> <li><a id="hoge2" href="#"><img src="●●" /></a></li> 先に進むことができずに困っています。よろしくお願いします。

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

  • ベストアンサー
回答No.2

srcElementで良いはずですが、、、 id=e?e.srcElement.id:event.srcElement.id; とか? window.eventとeventは同じ物です。 「idに応じた処理」の方にバグがありませんか?

infotown
質問者

お礼

ご回答いただきありがとうございます。 >srcElementで良いはずですが、、、 srcElementでとれていました。 イベント伝播を理解していませんでした。 srcElementの親を参照して、idを取得することでa要素のidを取得できました。 ありがとうございます。

その他の回答 (1)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

そりゃまぁ srcElement はIE用のだからねぇ。 http://www.tohoho-web.com/js/event.htm#srcElement Gecko系は target http://www.tohoho-web.com/js/event.htm#target

infotown
質問者

お礼

ご回答ありがとうございます。

関連するQ&A

専門家に質問してみよう