重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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>

先に進むことができずに困っています。よろしくお願いします。

A 回答 (2件)

srcElementで良いはずですが、、、



id=e?e.srcElement.id:event.srcElement.id;

とか?
window.eventとeventは同じ物です。

「idに応じた処理」の方にバグがありませんか?
    • good
    • 0
この回答へのお礼

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

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


ありがとうございます。

お礼日時:2009/04/20 10:07

そりゃまぁ srcElement はIE用のだからねぇ。


http://www.tohoho-web.com/js/event.htm#srcElement

Gecko系は target
http://www.tohoho-web.com/js/event.htm#target
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/20 10:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!