好了,当我学习JavaScript时,我阅读的所有书籍和Internet文章都显示了将参数传递给e处理JavaScript事件的函数的代码,例如下面的代码块:
e
function myEvent(e) { var evtType = e.type alert(evtType) // displays click, or whatever the event type was }
我一直都接受这种方式,但是现在我有一些问题(这让我很困惑):
element.onkeypress
element.onkeypress = function(e) { if(e.keyCode) { element.keyCode = e.keyCode; } else { element.keyCode = e.charCode; }
};
在e很短的event
event
创建事件的最简单方法是单击页面上的某个位置。
当您单击时,将click触发一个事件。这event实际上是一个对象,其中包含有关刚刚发生的操作的信息。在此示例的情况下,事件将具有诸如单击坐标(event.screenX例如),单击的元素(event.target)等信息。
click
event.screenX
event.target
现在,事件一直在发生,但是您对所有发生的事件都不感兴趣。当你正在感兴趣然而,在一些情况下,当你添加一个事件监听器,你知道会创建活动[1]的元素。例如,您有兴趣知道 用户何时单击“订阅”按钮,并且希望在此事件发生时 执行某些操作 。
为了对这个事件做一些事情,您将 事件处理程序 绑定到您感兴趣的按钮。将处理程序绑定到元素的方法是do element.addEventListener(eventName, handler)。
element.addEventListener(eventName, handler)
eventName是一个字符串,它是您感兴趣的事件的名称,在这种情况下,它将是'click'(针对该click事件)。
eventName
'click'
处理程序只是一个 函数 ,它在事件发生时会执行某些操作(已执行)。默认情况下,处理程序函数在执行时 将event对象(当您感兴趣的事件/操作发生时创建) 作为参数 传递 。
将eventa 定义为处理函数的参数是可选的,但有时(大多数情况下),对于处理函数了解发生的事件很有用。当你 做 定义它,这是e你在像你提到的那些功能见。请记住,event只是一个普通的javascript对象,上面有很多属性。
希望能有所帮助。
至于第三个问题,现在您应该知道您不能这样做,因为e仅在事件发生时存在。您可以使用处理程序函数,该函数可以在e对象执行时对其进行访问,以将其存储在某个全局变量中并对其进行处理。
[1]并不完全正确,但是更容易理解。说的更正确的话是“将事件侦听器添加到您知道将使事件流过的元素中”。