小编典典

参数e(事件)到底是什么?为什么将其传递给JavaScript函数?

javascript

好了,当我学习JavaScript时,我阅读的所有书籍和Internet文章都显示了将参数传递给e处理JavaScript事件的函数的代码,例如下面的代码块:

function myEvent(e) {
    var evtType = e.type
    alert(evtType)
    // displays click, or whatever the event type was
}

我一直都接受这种方式,但是现在我有一些问题(这让我很困惑):

  1. e是哪里来的?当我查看整个JavaScript文件时,e似乎根本不存在。
  2. 为什么要将此参数传递e给函数?如果我不传递e给函数,函数会停止工作吗?
  3. 考虑下面的代码块。有一个事件变量(e)传递给匿名内部函数。假设我想在匿名函数之外使用事件对象(可能在该行的上方/下方element.onkeypress)。我怎样才能做到这一点?
    element.onkeypress = function(e) {
    if(e.keyCode) {
        element.keyCode = e.keyCode;
    } else {
        element.keyCode = e.charCode;
    }
    

    };


阅读 528

收藏
2020-05-01

共1个答案

小编典典

e很短的event

创建事件的最简单方法是单击页面上的某个位置。

当您单击时,将click触发一个事件。这event实际上是一个对象,其中包含有关刚刚发生的操作的信息。在此示例的情况下,事件将具有诸如单击坐标(event.screenX例如),单击的元素(event.target)等信息。

现在,事件一直在发生,但是您对所有发生的事件都不感兴趣。当你正在感兴趣然而,在一些情况下,当你添加一个事件监听器,你知道会创建活动[1]的元素。例如,您有兴趣知道 用户何时单击“订阅”按钮,并且希望在此事件发生时 执行某些操作

为了对这个事件做一些事情,您将 事件处理程序 绑定到您感兴趣的按钮。将处理程序绑定到元素的方法是do
element.addEventListener(eventName, handler)

eventName是一个字符串,它是您感兴趣的事件的名称,在这种情况下,它将是'click'(针对该click事件)。

处理程序只是一个 函数 ,它在事件发生时会执行某些操作(已执行)。默认情况下,处理程序函数在执行时
event对象(当您感兴趣的事件/操作发生时创建) 作为参数 传递

eventa 定义为处理函数的参数是可选的,但有时(大多数情况下),对于处理函数了解发生的事件很有用。当你 定义它,这是e你在像你提到的那些功能见。请记住,event只是一个普通的javascript对象,上面有很多属性。

希望能有所帮助。

至于第三个问题,现在您应该知道您不能这样做,因为e仅在事件发生时存在。您可以使用处理程序函数,该函数可以在e对象执行时对其进行访问,以将其存储在某个全局变量中并对其进行处理。

[1]并不完全正确,但是更容易理解。说的更正确的话是“将事件侦听器添加到您知道将使事件流过的元素中”。

2020-05-01