Der folgende Code wird in dem Buch Head First jQuery dargestellt.Variable nicht definiert, manchmal
function lightning_one(t) {
$("#lightning1").fadeIn(250).fadeOut(250);
setTimeout("lightning_one()", t);
}; // end lightning_one
Es wird mit dieser Zeile aufgerufen.
lightning_one(3000);
Das beobachtete Verhalten ist, dass der Blitz blendet und aus einmal, wartet 3 Sekunden eingeblendet und wieder heraus, und dann weiter in die und aus verblassen. Firebug zeigt keine JavaScript-Fehler.
Ich verstehe, warum ich sehe, was ich sehe. Ich dachte, ich würde versuchen, die 3-Sekunden-Intervall zu erhalten, also habe ich dies:
setTimeout("lightning_one()", t); // nothing in the brackets
dazu:
setTimeout("lightning_one(t)", t); // t is in the brackets
Wenn ich die Seite aktualisieren, blendet der Blitz in die und aus einmal. Firebug sagt mir, dass die Variable t nicht definiert ist.
Meine Frage ist, wenn die Variable t nicht nach meiner Änderung definiert ist, wie lief der Befehl ohne Fehler, bevor ich es änderte? Es hat immer noch eine Variable namens t.
Mehr Infos
Vielen Dank an alle, die Kommentare und Antworten geschrieben. Für die Aufzeichnung in dem „Ende“ -Ordner, wird der Code folgendermaßen aus:
lightning_one();
function lightning_one(){
$("#container #lightning1").fadeIn(250).fadeOut(250);
setTimeout("lightning_one()",4000);
};
Ich habe nicht das geltende Kapitel abgeschlossen noch so weiß ich nicht, wenn der Code Änderung später vorgeschlagen wird. Wie bereits erwähnt, ist dies vielleicht nicht das beste Buch da draußen. Aber es ist die, die ich gekauft habe und ich lerne die Grundlagen von jQuery daraus.
Sie übergeben wirklich eine Zeichenfolge an 'setTimeout'? Wirf das Buch weit weg. – Bergi
Ich dachte das gleiche: Ich dachte, Funktionen auf diese Weise aufzurufen war eine schlechte Übung ... Nicht etwas, das in einem Buch gelehrt werden sollte! – jahroy
Ich sah viele Worte in diesem Sinne, als ich versuchte, die Antwort alleine zu finden. Der Aufruf der Funktion ohne Anführungszeichen war eine meiner erfolglosen Bemühungen. Für den Zweck meiner Frage dachte ich jedoch, ein genaues Zitat wäre der beste Weg zu gehen. –