1

このコードは次のf()関数を呼び出します。

<p id="firstp">Hello!</p> 
<script>
  function f() {
    doSomething();
  };
  document.getElementById("firstp").onmouseover = function() {
      f();
  };
</script>

しかし、このように書くと、動作しなくなります:

  document.getElementById("firstp").onmouseover = f();

関数を直接呼び出したときにイベント ハンドラーが設定されないのはなぜですか?

4

1 に答える 1

6

関数を呼び出したくないので、マウスオーバー イベントが発生したときに関数を呼び出す必要があることをブラウザに伝えたいだけです。f()(関数名の後の丸括弧) は関数を呼び出し、返される.onmouseoverものに代入しfます。fへの参照をに割り当てたい.onmouseoverので、探しているのは

document.getElementById("firstp").onmouseover = f;
于 2012-10-20T17:28:01.743 に答える