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:
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% 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 .
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.
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:
und hier kommt das Event
object e
her.
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.
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:
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.
Tags und Links javascript events javascript-events