为什么我不能直接分配功能?

时间:2012-10-20 17:25:45

标签: javascript javascript-events

此代码调用f()函数:

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

但如果我这样写,它就会停止工作:

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

为什么直接调用函数时事件处理程序没有设置?

1 个答案:

答案 0 :(得分:6)

因为您不想调用该函数,所以您只想告诉浏览器它应该在鼠标悬停事件发生时调用它。 f()(函数名称后的圆括号)调用该函数并分配给.onmouseover f返回的内容。您想将f的引用分配给.onmouseover,所以您要找的是

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