javascriptにおけるイベントバインディング互換性の問題を簡単に分析する.

1417 ワード

プロジェクトではしばしばこのようなコードが発生します.
function changeStyle(e){

    var e = e || window.event;

    var target = e.srcElement || e.target;

    target.style.display = "none";

}

document.getElemntById("xxx").onclick = changeStyle;
ここのeは何を表していますか?このように見て、eはパラメータです.関数のようなイベント関数を呼び出すと、一般的にはnullです.この時はie処理なら、e=window.eventです.window.eventは何ですか?イベントはwindowというグローバルオブジェクトの属性で、最後に実行する動作を表します.w 3 c標準で処理すると、w 3 cは空になったらトリガされるイベントが最初のパラメータとして入ってくると規定しています.つまり、argment[0]です.このように書いてもいいです.
function changeStyle(e){

    var e = argument[0] || window.event;

    var target = e.srcElement || e.target;

    target.style.display = "none";

}

document.getElemntById("xxx").onclick = changeStyle;
このようにeとは、発生したばかりのイベント動作を取ってから、targetを見て、e.srcelementはイベント動作の対象を表し、w 3 c標準ではe.targetはイベント動作の対象を表します.そして、targetはもう動作の対象を表しました.そしてどうやって操作すればいいですか?