Aufrufen einer JavaScript-Funktion mit dem onclick-Ereignis
-
Aufruf der JavaScript-Funktion mit dem Event-Handler
onclick - Anhängen einer JavaScript-Funktion an ein HTML-Element mit reinem JavaScript
-
Definieren einer Funktion auf dem
onclickEvent-Handler im HTML-Element -
Aufruf einer JavaScript-Funktion mit
addEventListener
Auch wenn wir statischen HTML-Inhalt für eine Webseite entwerfen, möchten wir ihn möglicherweise benutzerinteraktiv gestalten. HTML-Elemente sind standardmäßig dumm. Das Tag <a> ist benutzerinteraktiv, wird aber hauptsächlich verwendet, um einen bestimmten Pfad zu laden. HTML-Elemente wie div können benutzerinteraktiv gemacht werden, indem ihnen ein Event-Handler hinzugefügt wird. Wir werden einen solchen Event-Handler diskutieren, der als onclick-Event-Handler bezeichnet wird. Es gibt mehrere Möglichkeiten, es einem HTML-Element hinzuzufügen.
Aufruf der JavaScript-Funktion mit dem Event-Handler onclick
Wir können eine JavaScript-Funktion an ein div binden, indem wir den Event-Handler onclick im HTML verwenden oder den Event-Handler in JavaScript anhängen. Betrachten wir den folgenden Code, in dem wir den Event-Handler an ein div-Element anhängen.
<div id="interactive-div" onclick="changeMyColor('interactive-div')" style="cursor: pointer;">Click me</div>
function changeMyColor(id) {
var el = document.getElementById(id);
el.style.color = 'blue';
}
Das Element div akzeptiert standardmäßig keine Klickereignisse. Im Code binden wir eine JavaScript-Funktion changeMyColor() an den onclick-Eventhandler des div. Es macht nun das div anklickbar. Obwohl wir einen onclick-Event-Handler für ein div definieren, wird der Benutzer nicht wissen, ob das div einen Klick akzeptiert oder nicht, es sei denn, er klickt. Es ist eine gute UI/UX, den Cursor anders markiert zu haben, sobald der Benutzer auf unserem Ziel div schwebt. Dazu weisen wir dem Element div einen Inline-Stil style="cursor: pointer;" zu. Sobald der Benutzer über das div schwebt, zeigt der Cursor ein Handzeichen, das darauf hinweist, dass es anklickbar ist.
function changeMyColor(id) {
var el = document.getElementById(id);
el.style.color = 'blue';
}
Im JavaScript-Code definieren wir die Funktion changeMyColor(), die an das Event onclick des div übergeben wird. Die Funktion nimmt die ID des div als Parameter. Es wählt das Element mit der document.getElementById(id) aus und ändert die Schriftfarbe des Elements auf blue mit der Zeile el.style.color = "blue";. Daher haben wir dem div eine JavaScript-Funktion zugewiesen und anklickbar gemacht.
Anhängen einer JavaScript-Funktion an ein HTML-Element mit reinem JavaScript
Im letzten Ansatz haben wir den Eventhandler onclick im HTML deklariert. Es gibt eine Möglichkeit, den HTML-Code sauber zu halten und eine JavaScript-Funktion an das div oder das entsprechende HTML-Element anzuhängen, ohne einen Event-Handler onclick im HTML anzugeben. Hier weisen wir das Ereignis click in JavaScript statt in HTML zu. Daher ist dieser Ansatz rein JavaScript-basiert und hält den HTML-Code sauber. Ein solcher Programmierstil wird als unauffälliges JavaScript bezeichnet. Lesen Sie den folgenden Code, um das Konzept besser zu verstehen.
<div id="interactive-div" style="cursor: pointer;">Click me</div>
window.onload =
function() {
var el = document.getElementById('interactive-div');
el.onclick = changeMyColor;
}
function changeMyColor() {
var el = document.getElementById('interactive-div');
el.style.color = 'blue';
}
In Bezug auf den obigen Code haben wir den HTML-Code dem vorherigen Codebeispiel ähnlich gehalten. Wir haben im HTML keinen onclick-Event-Handler hinzugefügt. Stattdessen haben wir den Event-Handler onclick in JavaScript definiert und die gleiche Funktion changeMyColor in den JavaScript-Code angehängt. Hier sind ein paar Dinge zu beachten:
- Wir fügen den Event-Listener
onclickin daswindow.onloadein. Wenn wir die Methodewindow.onloadnicht verwenden, wird die FehlermeldungUncaught TypeError: Cannot set property 'onclick' of nullausgegeben. Dies liegt daran, dass dasdocument.getElementById("interactive-div")versucht, das Element mit deridinteractive-divabzufragen, während der HTML-Code geladen wird. Da das<script>-Tag im Abschnitt<head>enthalten ist, führt der JavaScript-Code den Inhalt des<script>-Tags aus, bevor das im<body>-Tag enthaltenedivtatsächlich geladen wird. Daher findet die FunktiongetElementById()das Element nicht und gibtnullzurück. Daher wird ein Fehler ausgegeben, der besagt, dassonclicknicht auf null gesetzt werden kann. - Ein weiterer zu beachtender Punkt ist, dass wir die Funktion dem Ereignishandler
onclickohne die Klammer()zuweisen. Schreiben wirel.onclick = changeMyColor();anstelle vonel.onclick = changeMyColor;wird die Funktion beim Laden des HTML ausgeführt, was nicht das ist, was wir wollen. Daher übergeben wir die Funktionsreferenz vonchangeMyColoran den Event-Handleronclick. Sobald der Benutzer das Ereignisonclickdurch Anklicken desdivauslöst, erfolgt der FunktionsaufrufchangeMyColor. Und dasdivwird blau.
Definieren einer Funktion auf dem onclick Event-Handler im HTML-Element
Es gibt noch einige weitere Möglichkeiten, eine JavaScript-Funktion beim Event onclick aufzurufen. Wir können die Methode in HTML definieren. Dies wird jedoch nicht empfohlen, da es den HTML-Code unordentlich macht. Lesen Sie den folgenden Code zum besseren Verständnis.
<div onclick="(function() { alert('hello there'); })()" style="cursor: pointer;">click me!</div>
Wenn Sie auf das div klicken, wird der obige Code den Text hello there anzeigen. Hier codieren wir die Funktionsdefinition inline im HTML. Es ist eine anonyme Inline-Methode. Und wir können dieselbe Funktion nicht an anderer Stelle verwenden, da sie keinen zugeordneten Namen hat. Längere Funktionsdefinitionen sind umständlich und beeinträchtigen die Lesbarkeit des Codes.
Aufruf einer JavaScript-Funktion mit addEventListener
Eine Möglichkeit, den Event-Handler onclick hinzuzufügen, besteht darin, die Funktion .onclick() zu verwenden. Es gibt eine andere Möglichkeit, die allgemeiner ist und zum Hinzufügen vieler weiterer Ereignis-Listener verwendet werden kann. Dafür verwenden wir die Funktion .addEventListener() von JavaScript. Diese Funktion kann auf einem element, document-Interface oder sogar einem window-Objekt verwendet werden. Wir können die Funktion .addEventListener() verwenden, um einen Methodenaufruf einzurichten, wenn ein bestimmtes Ereignis ausgelöst wird.
- Parameter: Es sind einige obligatorische Parameter erforderlich: die Art eines Ereignisses, zum Beispiel
Klickusw. und die Funktionlistener. Die Funktionlistenerwird ausgeführt, wenn das Ereignis ausgelöst wird. - Verwendung: Siehe den folgenden Code.
<div style="cursor: pointer;" id="interactive-div">click me!</div>
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('interactive-div')
.addEventListener('click', function() {
alert('hello');
});
});
Dieser Codierungsstil ist eine reine JavaScript-basierte unauffällige JavaScript-Programmierung. Hier haben wir den click-Listener mit der Funktion .addEventListener() hinzugefügt und damit dies funktioniert, müssen wir sicherstellen, dass .getElementById("interactive-div") das Element zurückgibt. Daher packen wir den Code in den Event-Listener DOMContentLoaded im Interface document. Andernfalls gibt der Code einen Fehler aus, der besagt, dass er einem null-Objekt kein event hinzufügen kann.