javascript - 为什么事件对象在我的例子中是未定义的

标签 javascript events

当点击一个按钮时,我想在现代浏览器如 Firefox, Chrome, 中获取事件对象 e。 问题是当点击按钮时给我一个 undefined 事件对象,注意当在 internet explorer 浏览器中使用 window.event 获取事件对象。

// the Object
var countdown = {
    hours: 0,
    minutes: 0,
    seconds: 0,
    element_h: null,
    element_m: null,
    element_s: null,
    init: function (hElemId, mElemId, sElemId) {
        this.element_h = document.getElementById(hElemId);
        this.element_m = document.getElementById(mElemId);
        this.element_s = document.getElementById(sElemId);
    },
    play: function (e){
        alert(e.target);
    }
};

HTML:

<button onclick="countdown.play();">Play</button>

最佳答案

您必须像这样显式地将 event 对象传递给 onclick 处理程序

<button onclick="countdown.play(event);">Play</button>

引用 MDN's Event Registration Doc page ,

The JavaScript code in the attribute is passed the Event object via the event parameter.

当您内联注册事件处理程序时,可以为它提供带有 event 参数的 Event 对象。但这不会自动完成。这就是为什么我们必须显式传递 event 对象。由于您没有传递它,e 默认为 undefined

关于javascript - 为什么事件对象在我的例子中是未定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27465788/

相关文章:

javascript - 如何创建多个剧透按钮

javascript - Fancybox 出现问题 (P

javascript - 为什么 jquery "this"属性返回 null?

c++ - 无法在 WMI 中检索对象属性 (c++)

javascript - 当鼠标在我的页面之外时如何捕捉按下的 F5 键?

javascript - 添加类时的过渡

javascript - 如何修改KendoUI DropDownList项

node.js - 扩展事件定义 - 接口(interface)错误地实现了接口(interface)

css - 获取即将到来的 CSS 过渡属性

jquery - 如何使用 jQuery 覆盖内联 javascript 事件?