これを行うとき:
<div onclick="fname();">
fname
イベントハンドラーとして割り当てているのではなく、イベントハンドラー(これはあなたのために作成された無名関数です)内から呼び出しています。 したがって、最初のパラメーターはに渡すものであり、引用符で囲まれたコードでは、何も渡さないことになります。fname
fname
あなたが望むだろう:
<div onclick="fname(event);">
event
ただし、自動生成された無名関数が名前を使用してパラメーターを受け入れるevent
か、IEまたはIEのようなことを行うブラウザーを使用していて、IEのグローバルを確認していることを前提としているため、それでも信頼できません。window.event
財産。
より信頼できる方法は次のとおりです。
<div onclick="return fname();">
...そして、伝播を停止し、ブラウザのデフォルトのアクションを防止したい場合は、fname
リターンがあります。false
このすべての理由から、イベントで何か面白いことをしたい場合(または、10回のうち9回)、ハンドラーをフックするために、常にDOM2メソッド(IE9より前のIEでは引数が少し異なります)をaddEventListener
使用することを強くお勧めします。attachEvent
そうしなくても)。
オフトピック:そして、この領域全体が、jQuery、Prototype、YUI、Closureなどのライブラリを使用してブラウザの違いをスムーズにし、自分の作業に集中できるようにすることをお勧めする理由の1つです。