Javascript 事件调用者未被传递到参数中

标签 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);
}

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

最佳答案

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

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

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

而不是这个:

element.onmouseover = yourfunction

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

关于Javascript 事件调用者未被传递到参数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673701/

相关文章:

javascript - 为液体主题添加移动菜单

javascript - Android 4.*浏览器地址栏隐藏时触发什么事件?

javascript - 单击时克隆的元素无法使用 Javascript [使用 Vanilla Js no JQuery]

Javascript IE8 未在 AttachEvent 中传递 'this'

javascript从数组中删除项目

javascript - Angular JS - 如何在 ng-repeat 中添加额外的 DIV

javascript - 将十六进制字符串转换为十六进制类型

jquery - 如何将鼠标事件发送到ajaxSetup beforeSend?

c# - 如何将事件实例的所有处理程序(委托(delegate))添加到同一事件类型的另一个事件实例?

c# - Naudio录音麦克风X秒钟