在编写事件处理程序时,对于几件事感到困惑

时间:2012-11-28 19:37:23

标签: javascript event-handling

所以我正在努力获得先进的Javascript技能。所以我在Lynda.com上做了一个实用的JS教程。第3章是关于EventHandlers的,我有点困惑(注意:我删除了使脚本在所有浏览器中都能运行的代码)。我已经重新录制了视频,但根本没用。

  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);
    

3 个答案:

答案 0 :(得分:1)

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

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

  3. 有关消费活动和here的更多信息,请参阅bubbling

答案 1 :(得分:1)

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

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

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

当你添加一个事件处理程序时,该函数的最后一个参数是一个布尔值,它指示句柄应该或不应该在事件处理程序的链中冒泡。这不是你会返回false,但如果事件也会由其他处理程序处理。如果要返回false或忽略先前的默认处理,可以调用preventDefault中的evtHandler函数。

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

答案 2 :(得分:0)

如果你在clickLink(e)谈论e,那么我可以说你可以在javascript函数原型中声明你想要的任何参数,但是在调用它时你可以提供参数optionaly.and {{1}你可以为e传递参数,或者你可以忽略它。关于clickLink(e) false中的addEventHandler,请检查此documentation,同时检查此question

例如,如果定义了函数FO

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

然后你可以这样称呼它:

 FO();

OR

 FO("BAR");