Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2011, 10h24   #1
Invité régulier
 
Inscription : juin 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 26
Points : 5
Points : 5
Par défaut setTimeout pas pris en compte

Bonjour, je débute en jquery et je ne comprend pas pourquoi "setTimeout" n'est pas pris en compte dans mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
function switch_slides(first_slide, slide, end_slide, delay){
	$(document).ready(function(){
		$(".slideshow"+slide).hide();
		if(slide == end_slide){
			slide = first_slide;
		}
		else{
			slide = slide + 1;
		}
		setTimeout($(".slideshow"+slide).fadeIn(), delay);
		setTimeout(switch_slides(first_slide, slide, end_slide, delay), delay);
		}
	);
}
Code :
1
2
3
4
5
6
7
8
 
<div class="slideshow1">frame 1</div>
<div class="slideshow2" style="display: none">frame 2</div>
<div class="slideshow3" style="display: none">frame 3</div>
<div class="slideshow4" style="display: none">frame 4</div>
<script>
	switch_slides(1, 1, 4, 2000);
</script>
Balthazar117 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 13h18   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Tout simplement parce que le premier paramètre de tes setTimeout est mauvais

Le premier paramètre doit être une référence à une fonction, or ni
Code :
$(".slideshow"+slide).fadeIn()
ni
Code :
switch_slides(first_slide, slide, end_slide, delay)
n'en sont.

Dans le premier cas, c'est une instruction jQuery, dans le second, c'est le résultat de l'exécution de la fonction.

La bonne syntaxe serait :
Code :
setTimeout(switch_slides, delay);
puisque dans ce cas, tu passes bien une référence à ta fonction et non plus le résultat de son exécution, le problème c'est que comme ça, tu ne peux pas passer de paramètre... Il faut alors utiliser une fonction anonyme englobante :
Code :
setTimeout(function(){switch_slides(first_slide, slide, end_slide, delay)}, delay);
et dans ce cas, tu passes bien une référence à cette fonction anonyme qui lancera la bonne fonction avec les bons paramètres
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h20.


 
 
 
 
Partenaires

Hébergement Web