2

所以我正在努力获得先进的 Javascript 技能。所以我在 Lynda.com 上做一个实用的 JS 教程。第 3 章是关于事件处理程序的,我有点困惑(注意:我已经删除了使脚本在所有浏览器中工作的代码)。我已经重新观看了视频,但这根本没有帮助。

  1. e指的是什么?我根本没有一个名为 e 的变量或我能看到的任何其他变量。
  2. false指的是什么?和return false我处理链接一样吗?

     function clickLink(e) {
        alert("You Clicked the Link");
     }
    
     function linkClicked(e) {
        addEventHandler(document.getElementById("clickLink"), "click", clickLink, false);
     }
    
     addEventHandler(window, "load", linkClicked, false);
    
4

3 回答 3

1
  1. e只是指已经发生的事件,您可以将其更改为您想要的任何内容。它只是将事件传递给需要使用它的各种功能等。

  2. 简单的false意思是该事件没有被“消耗”,即如果您有多个处理同一事件的处理程序,它可以被其他处理程序使用。所以,是的,它实际上与return false. (请参阅下面关于冒泡的链接)

有关使用事件和冒泡的更多信息,请参见此处

于 2012-11-28T19:51:30.253 回答
1

首先, e 只是您将在函数中收到的参数。你也可以这样写:

function evtHandler(){
    console.log(arguments[0]);
}

其中 arguments[0] 是你给定的e. 触发事件时调用处理函数。通常在 e 参数中,您有一个对象,其中包含有关如何触发事件的一些信息。

添加事件处理程序时,该函数的最后一个参数是布尔值,它指示句柄是否应该或不应该在事件处理程序的链中冒泡。它不是你会返回 false,而是如果事件也将由其他处理程序处理。如果您想返回 false 或忽略之前的默认处理,您可以 preventDefaultevtHandler.

PS 注意事件处理程序,因为跨浏览器兼容性存在一些问题;

于 2012-11-28T20:29:38.407 回答
0

如果您在谈论 e in clickLink(e),那么我可以说您可以在 javascript 函数原型中声明您想要的任何参数,但是在调用它时您可以提供可选参数。在这里clickLink(e)您可以为 e 传递一个参数,或者您可以简单地忽略it.and about the falsein addEventHandlercheck this documentation也检查这个SO问题

例如,如果函数FO定义为:

function FO(e){
    //function body here
}

那么你可以这样称呼它:

 FO();

或者

 FO("BAR");
于 2012-11-28T19:52:38.903 回答