Javascript事件调用程序未传递到参数

Javascript事件调用程序未传递到参数,javascript,events,event-handling,dom-events,Javascript,Events,Event Handling,Dom Events,我正在用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); } 我的印象是,在F

我正在用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'>";
ButtonHTML+=”;

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

如果将元素的mouseover事件处理程序设置在HTML元素之外,我认为您会将事件传递给您的函数

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

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

与此相反:

element.onmouseover=yourfunction


这就是你想要做的。由于您调用的函数没有参数,因此它没有接收任何参数,导致传入空值。

我同意关于事件处理程序的低调赋值的答案,但值得一提的是,您可以通过将事件对象作为参数传递来继续使用HTML onmouseover属性

onmouseover="fnNavMouseOver(event);"

读取事件属性的最佳方法:他的方法适用于所有浏览器。