2013-02-12 16 views
5

Ich frage mich, warum, sobald die Seite lädt, wird die Funktion btw_bijtellen() aufgerufen. Ich wollte es nennen, indem Sie ...JavaScript-Funktion läuft ohne aufgerufen

var $ = function (id) { 
    return document.getElementById (id); 
} 

function btw_bijtellen() { 
    window.alert("we want to calculate something after clicking th button"); 
} 

$("bereken").onclick = btw_bijtellen(); 

Antwort

13

Sie haben () hinzugefügt, die die Funktion bewirkt auszuführen.

Zum Beispiel:

var myFunc1 = function() { 
    alert('Hello'); 
}(); // <---() causes self execution 

var myFunc2 = function() { 
    return 5 + 5; 
}; 

var some_value = myFunc2(); // <--- Again() causes execution (you'd expect this one) 

In Ihrem Fall, wie in den Kommentaren erwähnt sind Sie im Grunde die onclick erzählen seinen Wert auf den Rückgabewert der Funktion zu setzen.

Wenn Sie die () fallen lassen, sollte es wie erwartet ausgeführt werden.

+0

Durch die Quere kommen kann, für @bert, das bedeutet, dass Ihr onclick-Handler "undefined" zugewiesen ist - weil das Ausführen dieser Funktion, die "undefined" zurückgibt, dieses Ergebnis onclick zuweist. –

+0

@Lloyd Also nur Klammern beim Deklarieren oder Aufrufen, der ganze Rest (welche Blätter nur Zuweisen?) Ohne Klammern? – pwp

+0

Deklarieren oder Anrufen ja. Für die Aufgabe einfach fallen lassen. – Lloyd

0

Putting () nach einem Funktionsnamen ist, wie Sie es nennen.

Wenn Sie die btw_bijtellen zu onclick zuweisen möchten, dann entfernen Sie die () aus der letzten Zeile des Codes in der Frage.

Mit der () dort, rufen Sie die Funktion und ihre Rückgabewert zu onclick. Da diese Funktion keine return-Anweisung hat, wird dieser Wert undefined sein, was nicht das ist, was Sie wollen.

3

Wenn Sie die Funktion auf klicken dann

$("bereken").on('click', btw_bijtellen); 

Update verwenden, aufgerufen werden (As pro Abfrage von WAO)

Wenn Sie das Argument übergeben müssen, dann müssen Sie als die angeben zweites Argument. die $.on() erhält die Daten in der event Handler

$("bereken").on('click', {key1: value1, key2: value2, keyn: valuen}, btw_bijtellen); 

wo Sie Ihre Parameter von event.data

var function = btw_bijtellen(event) { 
    var data = event.data; 
    console.log(data); 

    var key1 = event.data.key1; 
    console.log(key1); // this will output value1 
} 

Haben Sie einen Read auf diesen Link jQuery $.on() api

+0

Was ist, wenn Sie ein Argument an die Funktion 'btw_bijtellen' übergeben möchten? –

+1

@Wao: Ich hoffe, die aktualisierte Antwort hilft Ihnen – asifsid88

Verwandte Themen