Javascript settimeout la récursivité

J'ai juste commencé à regarder javascript donc j'espère que ce sera quelque chose de simple. Je veux faire un diaporama d'images qui joue automatiquement. C'est très simple, et il y a quelques tutoriels sur elle, mais pour une raison que je n'ai pas été en mesure de l'obtenir pour fonctionner. C'est ce que j'ai:

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);
}

L'image que je suis en train de changer a l'id de la diapositive. Et j'ai aussi des preuves que cela fonctionne. Ce qui se passe est la première image se charge. Ensuite, la deuxième image charges (ce qui signifie que l'origine setTimeout appel doit être de travail). Puis rien ne se passe. Ce qui me suggère que c'est la récursivité qui ne fonctionne pas.

Je suis très familier avec la récursivité dans d'autres langues, donc je pense que ça doit juste être une syntaxe chose ou quelque chose, mais je n'arrive pas à le comprendre. Merci pour toute aide.

"les paramètres dans le deuxième setTimeout. que serait ma première estimation.
fait intéressant, si je fais ce que je ne comprends pas la deuxième image... ce qui suggère qu'est ce que c'est de faire le changement d'image une fois. Aussi, tous les exemples que j'ai vu a des guillemets, c'est pourquoi je les ai mis dans.
Le problème avec citant les variables il n'y a que la minuterie est en cours d'exécution de la chaîne complète "delay(arr,number)", plutôt que de convertir les variables à leurs valeurs mémorisées - c'est pourquoi unquoting il serait le travail (même si vous souhaitez toujours besoin de les citer comme si.... "delay('" + arr + "', '" + number + "'). Cependant, point discutable - Pointu, la réponse est mieux. Je suis simplement expliquer ce qui se passe.

OriginalL'auteur Paul | 2011-04-05