イベントリスナーに設定した関数内で、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>
先に進むことができずに困っています。よろしくお願いします。
お礼
elm.onsubmit = "test();return false;"; のところを elm.setAttribute("onsubmit", "test(); return false;"); に変更したらできました。 ありがとうございました。
補足
すいません。例が悪かったですね。 デフォルトではtest.cgiが動くのですが、javascriptで動的に javascriptの関数tetst()が動くように変更したいのです。 elmはidが"test"のフォームです。 <html> <body> <form id="test" action="test.cgi" <input type="submit" value="submit"> </form> <script> var elm = document.getElementById("test"); elm.action = "#"; elm.onsubmit = "test();return false;"; </script> </body> </html> 要は、どうすればjavascriptでonsubmit属性が変更できるのか 教えてほしいのです。