Ich bin relativ neu in JS, aber ich habe in C vor programmiert, und ich versuche, meinen Kopf rund um die gesamte Event-gesteuerte Natur davon zu bekommen. Ich versuche, ein Skript zu erstellen, das Formulareingabe validiert, jedoch wird mein gesamter Code ausgeführt - alles innerhalb von if/else, Schleifen, was hast du - unabhängig davon, ob das Ereignis passiert oder nicht. Um zu testen, und um es einfacher zu machen, hier zu posten, habe ich ein einfaches Programm geschrieben, das dieses Problem auch hat.Javascript: Funktionen werden beim Laden der Seite aufgerufen anstatt onclick/onsubmit
HTML:
<button id="test">Test</button>
Javascript:
function init(){
document.getElementById("test").onclick = alert("hello");
}
window.onload = init;
Von dem, was ich verstehe, sollte die init-Funktion aufgerufen werden, wenn die Seite geladen wird (window.onload) und der Alarm sollte Pop-up, wenn Der Button mit der ID "test" wird angeklickt (onclick). Was tatsächlich passiert, ist, dass die Warnung erscheint, sobald die Seite geladen wird, und wieder auftaucht, wenn ich die Taste drücke.
Mein Denken ist, dass ich einige falsche Annahmen über die Reihenfolge gemacht habe, in der JS ausgeführt wird, aber ich kann nicht denken, was das ist. Kann das irgendjemand beleuchten?
Mit anderen Worten: 'x = alert()' bedeutet: 'x' ist der zurückgegebene Wert des' alert() 'Statements. Und was ist der zurückgegebene Wert? Lass es uns ausführen, um es herauszufinden - und genau hier findet die Ausführung statt! – Xufox
Danke für die Antwort! Das macht eigentlich Sinn. Aber wie würde ich eine Variable übergeben, die von der ausgelösten Funktion verwendet werden soll, die ich auch in der Elternfunktion verwenden möchte? Oder würde ich einfach eine globale Variable verwenden? –
Sie müssten den Funktionsaufruf selbst in eine Funktion umwandeln, etwa so: 'onclick = function() {myFunction (myVariable); }; 'das wird den gleichen Umfang haben – mattytommo