为什么在我的情况下事件对象是未定义的

Lio*_*ing 4 javascript events

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

// 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);
    }
};
Run Code Online (Sandbox Code Playgroud)

HTML:

<button onclick="countdown.play();">Play</button>
Run Code Online (Sandbox Code Playgroud)

the*_*eye 8

您必须将event对象显式传递给onclick处理程序,如下所示

<button onclick="countdown.play(event);">Play</button>
Run Code Online (Sandbox Code Playgroud)

引用MDN的事件注册文档页面,

属性中的JavaScript代码通过event参数传递给Event对象.

在内联注册事件处理程序时,可以为该Event对象提供event参数.但这不会自动完成.这就是我们必须明确传递event对象的原因.由于您未通过它,e因此undefined默认情况下.

  • @LionKing事件指的是window.event对象。因此,它必须完全相同。 (2认同)