JQuery, setTimeout funktioniert nicht
Ich bin noch neu in JQuery, ist auf dem besten Weg, meine ajax-Beispiel zu Arbeit, die ich ins stocken geraten mit setTimeout. Habe ich es gebrochen nach unten zu, wo es sollte hinzufügen,".", um das div-jede Sekunde.
Der entsprechende code ist in zwei Dateien.
index.html
<html><head>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript' src='myCode.js'></script>
</head>
<body>
<div id='board'>Text</div>
</body>
</html>
und myCode.js
(function(){
$(document).ready(function() {update();});
function update() {
$("#board").append(".");
setTimeout('update()', 1000); }
})();
den myCode.js die Datei funktioniert in Ordnung und "update()" läuft das erste mal durch, aber nie wieder.
InformationsquelleAutor der Frage Bolt_Head | 2009-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast ein paar Probleme hier.
Erstens, Sie definieren Ihren code innerhalb einer anonyme Funktion. Dieses Konstrukt:
macht zwei Dinge. Es definiert eine anonyme Funktion und ruft Sie auf. Es gibt Spielraum Gründe, dies zu tun, aber ich bin nicht sicher, es ist, was Sie eigentlich wollen.
Sind Sie vorbei in einen code-block zu
setTimeout()
. Das problem ist, dassupdate()
ist nicht in den Geltungsbereich, wenn Sie ausgeführt wie das. Es allerdings, wenn Sie eine Funktion Zeiger statt, damit das funktioniert:da die Funktion den Zeiger
update
ist im Anwendungsbereich des Blocks.Aber wie ich schon sagte, gibt es keine Notwendigkeit für die anonym-Funktion so schreiben Sie es so:
oder
und beide arbeiten. Der zweite funktioniert, weil die
update()
innerhalb des code-Blocks innerhalb des Aufgabenbereichs jetzt.Ich auch lieber die
$(function() { ... }
verkürzt block bilden und zu fordern, anstattsetTimeout()
innerhalbupdate()
können Sie einfachsetInterval()
statt:Hoffe das klärt, bis.
InformationsquelleAutor der Antwort cletus
Können Sie clearInterval, wenn Sie wollte aufhören, es an einer Stelle.
InformationsquelleAutor der Antwort meder omuraliev
SetTimeout verwendet wird, um Ihren code ausführen, wenn eine bestimmte Zeit so für Ihre Anforderungen die besser zu verwenden, weil setInterval wird die Funktion aufrufen jedes mal, wenn in einem bestimmten Zeitintervall.
InformationsquelleAutor der Antwort Goysar
Dies leistet das gleiche, ist aber viel einfacher:
Können Sie Kette eine Verzögerung, bevor Sie fast jede jQuery-Methode.
InformationsquelleAutor der Antwort Victor Stoddard