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



所以我正在努力获得高级的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);
    
  1. e仅指已发生的事件,您可以将其更改为所需的任何内容。它只是将事件传递给需要使用它的各种函数等。

  2. false只是意味着事件没有被"消费",即,如果同一事件有多个处理程序,它可以被其他处理程序使用。所以,是的,它实际上与return false相同。(请参阅下面关于冒泡的链接)

有关消费事件和冒泡的更多信息,请参阅此处。

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

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

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

添加事件处理程序

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

附言小心事件处理程序,因为跨浏览器兼容性存在一些问题;

如果你在clickLink(e)中谈论e,那么我可以说你可以在javascript函数原型中声明你想要的任何参数,但是在调用它时你可以提供可选的参数addEventHandler false clickLink(e)

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

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

那么你可以这样称呼它:

 FO();

 FO("BAR");

相关内容

  • 没有找到相关文章

最新更新