2012-05-22 6 views
13

las ich auf viele Orte, die Sie automatisch gestartet js Funktionen auf Last können, indem Sie:Javascript-Funktionen automatisch ausführen UND sie später aufrufen?

$(function() { 
    // code... 
}); 

Oder

var myFunc = function() { 
    // code... 
}(); 

Meine Frage ist, wie Sie diese Funktionen später rufen Sie? Weil die einfache Deklaration einfach abgerufen werden kann, aber nicht automatisch gestartet wird.

function myFunc() { 
    // code... 
} 

Ich muss sie alle beim Laden manuell aufrufen, und das ist ärgerlich, nehmen Sie Leerzeichen in den Code und es kann eine Fehlerquelle sein, wenn ich einen vergessen habe.

Wenn Sie nicht meine Erklärungen verstehen, hier ein Beispiel:

Ich habe ein „Gewicht“ und „Höhe“ Feld in meiner Form, und ich brauche den BMI (Body Mass Index) zu berechnen. Wenn die Seite geladen wird, werden das Gewicht und die Höhe von der Datenbank gefüllt, dann starte ich die Berechnung, wenn alles fertig ist. Wenn der Benutzer später jedoch das Gewicht oder die Höhe ändert, muss der BMI sofort neu berechnet werden. Was ist der beste Weg, das zu tun? Mit Jquery oder reinem JS, stört es mich nicht.

Danke.

Antwort

22

A reusable immediate function

var reference = (function thename(){ 

    //function body 

    return thename; //return the function itself to reference 

}()); //auto-run 


reference(); //call it again 
reference(); //and again 

Beachten Sie, dass die Funktion aufrufen einen Verweis auf die Funktion gibt Ihnen gerade genannt.

var anotherReference = reference(); //anotherReference === reference 
+1

Referenz(); // und wieder! –

+0

Genau das, was ich gesucht habe, danke! – Willy

+0

Ist es wichtig, ob "Referenz" und "thename" gleich sind? – Willy

-2

Dieser Code:

var myFunc = function() { 
     // code... 
    }(); 

Wird nicht auf dem Dokument bereit ausführen, wird es in dem Moment ausführen der Browser die Datei analysiert. Nun, wenn das mit Ihnen noch in Ordnung ist, können Sie dann diese Funktion aufrufen wieder tun:

myFunc(); 

So einfach ist das ....

diese Hilfe tut?

+0

Die Datei wird analysiert, nachdem das DOM geladen hat (ich habe die Deklaration am Ende des HTML-Codes platziert). Aber ich bekomme eine "myFunc() ist keine Funktion", wenn ich das tue. – Willy

+0

Sie haben Recht, meine Antwort ist falsch. "myFunc" enthält tatsächlich den Rückgabewert Ihrer anonymen Funktion. – Deleteman

Verwandte Themen