hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

IEのイベントでのthis

Firefoxではonclickなどのイベント発生時にthisを使用すると、イベントが発生したオブジェクトを取得できるのですが、
IEの場合はthisがundefinedになってしまっていました。
IEではevent.srcElementを使用するようです。

var addEvent = ( window.addEventListener ?
    function(elm, event, func){
        elm.addEventListener(event, func, false);
    } :
    function(elm, event, func){
        elm.attachEvent('on' + event, func); //IE
    }
);
var hogehoge = document.getElementById("hogehoge");
addEvent(hogehoge, 'click', function(event){

    /* IEの場合はthisがundefinedになるのでevent.srcElementを使用する */
    /* Firefoxの場合はthisを使用する */
        var self = ( event.srcElement ? event.srcElement : this );
    alert(self.value);
});