Javascript事件调用者没有被传递给params

时间:2009-03-23 14:57:05

标签: javascript events javascript-events event-handling

我正在使用javascript

中的以下onmouseover函数
function fnNavMouseOver(evt) {
    alert(evt.target);
    var eSrc
    evt = (evt) ? evt : (window.event) ? window.event : ""
    eSrc = (evt.target) ? evt.target : evt.srcElement
    alert(eSrc);
}

我的印象是在firefox中应该将事件传递给函数。然而,evt似乎是空的。有什么可能导致这个?

编辑:

调用此方法的代码就像这样工作

ButtonHTML += "<img onmouseover='fnNavMouseOver()' id='" + ButtonId + "Norm' src='" + ImgPath + "_n.jpg' style='border-style:none;z-index=102;position:absolute;left:0px;top:0px'>";

然后该字符串被附加到页面上的div。我意识到这真的不是理想的,但我正在使用一个旧的框架并试图在其中提供一些新的功能。

2 个答案:

答案 0 :(得分:2)

如果在HTML元素之外设置元素的鼠标悬停事件处理程序,我认为您将把事件传递给您的函数。

在您的使用中,您基本上是这样做的:

element.onmouseover = function () { yourfunction() };

而不是:

element.onmouseover = yourfunction

这是您想要做的事情。由于您在没有参数的情况下调用函数,因此它不接收任何参数,从而导致传入Null值。

答案 1 :(得分:1)

我同意关于事件处理程序的不显眼分配的答案,但是对于它的价值,您可以通过将事件对象作为参数传递来继续使用HTML onmouseover属性...

onmouseover="fnNavMouseOver(event);"