Javascript: was genau ist Parameter e (Ereignis) und warum es an JavaScript-Funktion übergeben?

8

Nun, wenn ich JavaScript gelernt habe, übergibt alle Bücher und Internet-Artikel einen Parameter e an eine Funktion, die JavaScript-Ereignis behandelt, wie der Code-Block unten:

%Vor%

Ich habe es immer so akzeptiert, wie es ist, aber jetzt habe ich einige Fragen dazu und es ist sehr verwirrend für mich:

  1. Woher kommt dieses e? Wenn ich mir die gesamte Javascript-Datei anschaue, scheint e überhaupt nicht zu existieren.
  2. Warum übergeben Sie diesen Parameter e an Funktionen? Funktioniert die Funktion nicht mehr, wenn ich e nicht an sie weitergebe?
  3. Betrachten Sie den unten stehenden Codeblock. Es gibt eine Ereignisvariable (e), die an eine anonyme innere Funktion übergeben wird. Sagen wir, ich möchte das Ereignisobjekt außerhalb der anonymen Funktion verwenden (vielleicht in einer Zeile über / unter der Element.onkeypress Zeile), wie kann ich das tun?

    %Vor%
Lord Yggdrasill 11.03.2016, 09:24
quelle

4 Antworten

16

Die e steht für event

Die einfachste Möglichkeit, ein Ereignis zu erstellen, besteht darin, irgendwo auf die Seite zu klicken.

Wenn Sie auf klicken, wird ein click -Ereignis ausgelöst. Dieses event ist eigentlich ein Objekt, das Informationen über die Aktion enthält, die gerade passiert ist. In diesem Beispiel würde das Ereignis Informationen wie die Koordinaten des Klicks ( event.screenX zum Beispiel), das Element, auf das Sie geklickt haben ( event.target ), und vieles mehr enthalten.

Nun passieren Ereignisse die ganze Zeit, aber Sie sind nicht an all den Ereignissen interessiert, die passieren. Wenn Sie jedoch an einem Ereignis interessiert sind, fügen Sie dem Element, dessen Ereignisse Sie erstellen möchten [1], einen Ereignis-Listener hinzu. Beispielsweise möchten Sie wissen, wenn der Benutzer auf die Schaltfläche "Abonnieren" klickt und etwas tun , wenn dieses Ereignis eintritt.

Um etwas an diesem Ereignis zu tun, binden Sie einen Event-Handler an die Schaltfläche, an der Sie interessiert sind. Die Bindung des Handlers an das Element erfolgt über element.addEventListener(eventName, handler) .

eventName ist eine Zeichenfolge und der Name des Ereignisses, an dem Sie interessiert sind. In diesem Fall wäre dies 'click' (für das Ereignis click ).

Der Handler ist einfach eine Funktion , die etwas tut (es wird ausgeführt), wenn das Ereignis eintritt. Die Handler-Funktion wird bei der Ausführung standardmäßig an das Objekt event übergeben (das erstellt wurde, als das Ereignis / die Aktion, an der Sie interessiert sind, aufgetreten ist) als Argument .

Das Definieren von event als Parameter Ihrer Handler-Funktion ist optional, aber manchmal (meistens) ist es nützlich, dass die Handler-Funktion über das Ereignis informiert ist, das passiert ist. Wenn Sie tun definieren dies ist das e , das Sie in den Funktionen sehen, wie die, die Sie erwähnt haben . Denken Sie daran, dass event nur ein normales JavaScript-Objekt mit vielen Eigenschaften ist.

Hoffnung, die geholfen hat.

Weitere Informationen finden Sie Ereignisse erstellen und auslösen

Wie bei Ihrer dritten Frage sollten Sie jetzt wissen, dass Sie das nicht tun können, weil e nur existiert, wenn ein Ereignis eintritt. Sie könnten die Handler-Funktion haben, die Zugriff auf das e -Objekt hat, wenn es ausgeführt wird, um es in einer globalen Variable zu speichern und daran zu arbeiten.

[1] Das ist nicht genau richtig, aber es ist einfacher zu verstehen. Die korrektere Aussage lautet: "Fügen Sie dem Element einen Ereignis-Listener hinzu, von dem Sie wissen, dass Ereignisse durch ihn fließen werden". Weitere Informationen finden Sie .

    
Dimitris Karagiannis 11.03.2016, 09:51
quelle
4

Der Parameter e , nach dem Sie fragen, ist ein Event Objekt, und es stellt das Ereignis dar, das ausgelöst wurde, wodurch Ihre Funktion ausgeführt wurde. Es muss nicht unbedingt e sein, Sie können es wie alle anderen Funktionsparameter benennen.

  1. Woher kommt dieses e? Wenn ich mir die gesamte Javascript-Datei anschaue, z scheint überhaupt nicht zu existieren.

Sie können diese Variable e in Ihrer Javascript-Datei nicht finden, weil Es ist wirklich nicht da, sondern kommt von der JavaScript-Engine ausgeführt Ihre Rückruffunktion.

Wenn Sie eine Rückruffunktion für ein Ereignis angeben (z. B. element.onkeypress = function(e) { ... } ), geben Sie die JavaScript-Engine eine Funktion zum Ausführen / Aufruf, wenn dieses Ereignis ausgelöst wird und wann es führt / ruft Ihre Callback-Funktion auf, die es an einem Event -Objekt übergibt repräsentiert das Ereignis, das gerade passiert ist. Javascript könnte etwas tun So rufen Sie Ihre Rückruffunktion auf:

%Vor%

und hier kommt das Event object e her.

  1. Warum diesen Parameter e an Funktionen übergeben? Funktioniert die Funktion nicht mehr, wenn? Ich gebe es nicht weiter?

Die Funktion funktioniert nicht, wenn Sie nicht den Parameter e haben. Wenn Sie jedoch auf einige Details zu dem Ereignis zugreifen müssen, das Ihren Fehler verursacht hat Auszuführende Funktion, Sie benötigen den Parameter e , um sie zu erhalten.

  1. Betrachten Sie den folgenden Codeblock. Es gibt eine Ereignisvariable (e), die an einen übergeben wird anonyme innere Funktion. Sagen wir, ich möchte Event-Objekt außerhalb der verwenden anonyme Funktion (vielleicht in einer Zeile über / unter der Element.onkeypress-Zeile), Wie kann ich das tun?

Ich denke nicht, dass Sie das tun können, auch wenn Sie es in einer Variablen außerhalb der. speichern Umfang Ihrer Rückruffunktion. Dies liegt daran, dass Ihre Funktion nicht ausgeführt wird sofort, wenn Sie es deklarieren, aber nur wenn das Ereignis ausgelöst wird (z. B. wird eine Taste gedrückt und das Ereignis 'Tastendruck' ausgelöst).

%Vor%

Dies funktioniert nur, wenn der Code die Variable event verwendet wird auch später ausgeführt, speziell nachdem die anonyme Funktion übergeben wurde onkeypress wird ausgeführt. Also könnte der folgende Code funktionieren:

%Vor%     
Arnelle Balane 11.03.2016 09:47
quelle
0

Wenn ein Listener mithilfe von addEventListener hinzugefügt wird, ist das erste an die Funktion übergebene Argument ein Event-Objekt. Daher wird es dem e -Parameter (oder einem anderen Namen) zugewiesen wird dem ersten Parameter der Funktion gegeben.)

    
RobG 11.03.2016 09:40
quelle
0
  1. Wie JS funktioniert, erhalten Sie in jedem Ereignis-Callback ein Event-Objekt. Es enthält eine Menge Informationen über die Veranstaltung.
  2. Funktion wird nicht aufhören zu arbeiten, wenn Sie es nicht übergeben, ist es optional. Gehen Sie weiter und console.log das Ereignis (e) und sehen Sie das Ereignisobjekt und seine Eigenschaften. Es wird klarer, wenn du siehst, was es hat.
  3. Sie können es außerhalb dieser anonymen Funktion verwenden, indem Sie es speichern, Beispiel:

    %Vor%

    Sie sollten jedoch wissen, dass das Ereignisobjekt nur für das spezifische Ereignis, das passiert ist, relativ ist und dass Sie entscheiden sollten, ob Sie das wirklich tun müssen.

Bata 11.03.2016 09:41
quelle