1

我正在使用onmouseoverJavascript 编写以下函数

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 中。我意识到这确实不理想,但我正在使用一个旧框架并尝试在其中插入一些新功能。

4

2 回答 2

2

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

在您的使用中,您实际上是在这样做:

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

而不是这个:

element.onmouseover = yourfunction

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

于 2009-03-23T15:15:00.317 回答
1

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

onmouseover="fnNavMouseOver(event);"
于 2009-03-23T15:59:06.340 回答