Javascript Rekursion settimeout

Habe ich gerade begann, mich auf javascript, so dass hoffentlich das wird etwas einfacher. Ich möchte, um eine Diashow der Bilder, die automatisch abgespielt wird. Dies ist sehr einfach, und es gibt ein paar tutorials, aber für einige Grund, warum ich nicht in der Lage gewesen, um es zu arbeiten. Dies ist, was ich habe:

var image1 = new Image();
var image2 = new Image(); 
var image3 = new Image();
image1.src = "images/website6.jpg";
image2.src = "images/website7.jpg";
image3.src = "images/sunset.jpg";
var images = new Array(
  "images/website6.jpg",
  "images/website7.jpg",
  "images/sunset.jpg"
);
setTimeout("delay(images,0)",2000);
function delay(arr,num){
  document.slide.src = arr[num % 3];
  var number = num + 1;
  setTimeout("delay(arr,number)",1000);
}

Dem Bild, das ich bin versucht zu ändern, hat id schieben. Und ich habe auch einige Beweise, dass es funktioniert. Was passiert, ist das erste Bild geladen. Dann das zweite Bild lädt (was bedeutet, dass die ursprüngliche setTimeout aufrufen, muss arbeiten). Dann passiert nichts mehr. Was für mich schlägt, es ist die Rekursion, die nicht funktioniert.

Ich bin sehr vertraut mit Rekursion in anderen Sprachen, so dass ich denke, es muss einfach nur ein syntax-Sache oder so etwas, aber ich kann nicht scheinen, um es herauszufinden. Vielen Dank für jede Hilfe.

  • unquote die Parameter in der zweiten setTimeout. das wäre meine erste Vermutung.
  • interessanterweise, wenn ich das mache habe ich nicht das zweite Bild... das zeigt, welche macht das Bild einmal ändern. Auch, jedes Beispiel, das ich gesehen habe, hat Zitate, die ist, warum ich Sie in.
  • Das problem mit dem quoting der Variablen ist, dass der timer läuft, die vollständige Zeichenfolge "delay(arr,number)" eher als die Konvertierung der Variablen auf die gespeicherten Werte - das ist, warum unquoting es funktionieren würde (obwohl Sie müssen noch zitieren so gerne.... "delay('" + arr + "', '" + number + "'). Jedoch, moot point - Spitzen, die Antwort ist besser. Ich bin einfach zu erklären, was passiert.
InformationsquelleAutor Paul | 2011-04-05
Schreibe einen Kommentar