分享

参数e(事件)究竟是什么以及为什么将它传递给JavaScript函数?

 印度阿三17 2019-09-16

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

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

我总是接受它的方式,但现在我有一些问题(这对我来说非常混乱):

>这是从哪里来的?当我查看整个JavaScript文件时,e似乎根本不存在.
>为什么将此参数e传递给函数?如果我没有将e传递给他们,功能是否会停止工作?
>考虑下面的代码块.传递给匿名内部函数的事件变量(e).假设我想在匿名函数之外使用一个事件对象(可能在element.onkeypress行上方/下方的行中).我怎样才能做到这一点?

element.onkeypress = function(e) {
    if(e.keyCode) {
        element.keyCode = e.keyCode;
    } else {
        element.keyCode = e.charCode;
    }
};

解决方法:

e是活动的缩写

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

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

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

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

eventName是一个字符串,它是您感兴趣的事件的名称,在这种情况下将是“click”(对于click事件).

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

将事件定义为处理函数的参数是可选的,但有时(大多数情况下),处理程序函数可以了解发生的事件.当你定义它时,这就是你在函数中看到的,就像你提到的那样.请记住,事件只是一个常规的javascript对象,上面有很多属性.

希望有所帮助.

欲了解更多信息,请阅读Creating and Triggering Events

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

[1]这不完全正确,但理解起来更简单.更正确的说法是“向你知道会让事件流经它的元素添加一个事件监听器”.有关更多信息,请参见this

来源:https://www./content-1-454101.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多