2015-11-12 24 views
5

heute meine Frage fragt, wie ich auf eine Funktion innerhalb einer Funktion zugreifen würde. So habe ich zum Beispiel einen Knopf, und wenn ich ihn anklicke, würde er alarmieren. Die Sache ist, wenn Sie eine Funktion haben, die die Funktion umgibt, würde die innere Funktion mit der Warnung nicht alarmieren.Wie funktioniert die Funktion?

Hier ist ein Beispiel:

html:

<button onclick="doStuff()">Alert</button> 

js:

function nothing() { 

var doStuff = function() { 
    alert("This worked!") 
} 

} 

so die doStuff() Funktion nicht funktionieren würde. Kann mir jemand helfen, einen Zugang zu finden? Vielen Dank.

+0

Warum muss die Funktion in einer anderen Funktion sein? – EkcenierK

+1

Sie können einfach nicht. 'doStuff' ist nur in' nothing() 'sichtbar. –

+0

Der Code in 'nothing' (einschließlich' doStuff') wird nicht ausgeführt, bis Sie 'nothing' aufrufen. Du musst es also nennen. Und dann können Sie 'doStuff' für das Äußere verfügbar machen, indem Sie es zurückgeben oder es einer Variablen zuweisen, die in einem anderen Bereich definiert ist. Aber ich denke, dass Sie wollen, dass' doStuff' eine Methode von 'nothing' ist anstatt eines Teils davon innerer Code – Oriol

Antwort

1

@Joseph der Träumer ist letztendlich richtig, aber wenn Sie auf eine Funktion, die in einer anderen Funktion geschachtelt ist, gesetzt waren, könnten Sie einen OOP-Ansatz verwenden.

erstellen javascript "Klasse" Objekt und den Umfang Ihrer Funktion "this":

function Nothing() { 
    this.doStuff = function() { 
     alert("works"); 
    } 
} 
  • Weiter Sie eine id Ihre Schaltfläche Hinzufügen
  • zusammen mit einem Klick-Ereignis-Listener

Innerhalb Ihres Click-Ereignisses können Sie dann doStuff innerhalb der Nothing "Class" -Funktion wie folgt aufrufen:

var object = new Nothing(); 
object.doStuff(); 

https://jsfiddle.net/me7fek5f/

+0

Oh, ich bekomme es so mit Ihrer Objektprogrammierung. Das könnte ich tun. Dank bro. –

+0

kein Problem, lassen Sie mich wissen, wenn Sie überhaupt stecken bleiben –

+0

Ja, so dachte ich, um Spiele mit Tasten zu wechseln –

1

Sie können nicht. Das liegt daran, dass es in einem Bereich eingeschlossen ist, auf den Sie nicht wirklich global zugreifen können. Der einzige Weg, auf den Sie zugreifen können, ist, ihn außerhalb von nothing zu belichten.

0

Ist das eine Hausaufgaben Frage?

Du bist wahrscheinlich etwas zu tun, wie diese gestellt:

function nothing() { 
    var doStuff = function() { 
    alert("This worked!") 
    } 
    var yourButton = getYourButton(); 
    attachClickListener(yourButton, doStuff); 

Die Implementierungen von getYourButton und attachClickListener werden dem Leser überlassen.

+0

Nein, ich habe ein Spiel programmiert, obwohl ich versuchte, auf eine Funktion innerhalb einer Funktion zuzugreifen –

Verwandte Themen