Javascript effets SCRIPTACULOUS en boucle

Fermé
amaru1987 - 11 août 2009 à 13:09
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 - 11 août 2009 à 13:14
Bonjour,

J'utilise la librairie scriptaculous pour faire des effets d'affichage sur ma page web. J'ai testé les effets un a un et ils fonctionnent tous (apparition / disparition en fondu).
Ce que je voudrais c'est qu'ils se déclenchent au chargement de la page (onload) et se reproduisent sans arrêt un peu comme une animation infinie.
J'ai pensé à la fonction setTimeOut comme ceci :

<script type="text/javascript">
	function appear()
	{
	new Effect.Appear('div1', {duration:3, fps:25, from:0.0, to:1.0, delay:1});
	new Effect.Appear('div2', {duration:3, fps:25, from:0.0, to:1.0, delay:2});
	new Effect.Appear('div3', {duration:3, fps:25, from:0.0, to:1.0, delay:3});
	new Effect.Fade('div1', {duration:3, fps:25, from:1.0, to:0.0, delay:4});
	new Effect.Fade('div2', {duration:3, fps:25, from:1.0, to:0.0, delay:5});
	new Effect.Fade('div3', {duration:3, fps:25, from:1.0, to:0.0, delay:6});
	setTimeout(appear(),7000);
	}
	appear();
</script>

Malheureusement ca me génère une boucle infinie qui empêche l'affichage même de ma page et le blocage de mon navigateur.
J'ai testé aussi en précisant le déclenchement de la fonction en au chargement de la page
<body onload="appear()"
mais la même erreur se produit.
L'erreur est bien compréhensible mais justement est-ce que quelqu'un aurait une solution pour ce que je souhaite faire ?

Merci bien,

1 réponse

avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
11 août 2009 à 13:14
Essaye avec un boucle while et appelles ta fonction avant </body></html>:
<script type="text/javascript">
function appear() {
	continuer = true;
	while(continuer == true) {
		new Effect.Appear('div1', {duration:3, fps:25, from:0.0, to:1.0, delay:1});
		new Effect.Appear('div2', {duration:3, fps:25, from:0.0, to:1.0, delay:2});
		new Effect.Appear('div3', {duration:3, fps:25, from:0.0, to:1.0, delay:3});
		new Effect.Fade('div1', {duration:3, fps:25, from:1.0, to:0.0, delay:4});
		new Effect.Fade('div2', {duration:3, fps:25, from:1.0, to:0.0, delay:5});
		new Effect.Fade('div3', {duration:3, fps:25, from:1.0, to:0.0, delay:6});
		setTimeout(appear(),7000);
	}
}
</script>
0