2010-11-11 11 views
1

J'essaie d'implémenter un diaporama en utilisant jQuery J'ai un bouton appelé SlideShow et en cliquant dessus, il déclencherait le diaporama. Je afficher un ensemble de vignettes:setInterval méthode dilemme

<div class="pics"> 
<img u="bob" id="pic1" src="/photos/thumbs/file1.jpg" class="apt" f="file1.jpg"> 
<img u="rob" id="pic2" src="/photos/thumbs/file2.jpg" class="apt" f="file2.jpg"> 
<img u="job" id="pic3" src="/photos/thumbs/file3.jpg" class="apt" f="file3.jpg"> 
<img u="tom" id="pic4" src="/photos/thumbs/file4.jpg" class="apt" f="file4.jpg"> 
<img u="scott" id="pic5" src="/photos/thumbs/file5.jpg" class="apt" f="file5.jpg"> 
</div> 

Vous pouvez voir les pouces a la classe « apt » qui me permettra d'obtenir l'ensemble de tous les pouces. Le gestionnaire d'événements click doit simplement appeler une fonction dans une boucle avec un setInterval (f, 5000) De cette façon, je lis les informations d'un pouce toutes les 5 secondes et charge l'image complète du serveur.

Mais je ne suis pas défini, peu importe comment je le fais. Voici le code:

var idx=''; 
    function SlideShow() { 
    idx = 1; //global variable to track index of current thumb inside <div> 
    setInterval("GetFullImage()",5000); 
    } 

    function GetFullImage(){ 
    var i = $('.apt:nth-child(' + idx + ')').attr("id"); 
    var u = $('.apt:nth-child(' + idx + ')').attr("u"); 
    var f = $('.apt:nth-child(' + idx + ')').attr("f"); 
    alert('i:=' + i + ' u:' + u + ' f:' + f); <-- always say i, u, f undefined after first time 
    idx++;   
    } 

Qu'est-ce qui ne va pas? Je n'ai pas beaucoup joué avec les appels setInterval().

Répondre

1

Vous faites référence à la nième enfant pas frères et soeurs. Les images sont toutes des frères et soeurs l'une de l'autre, pas une résidant dans la suivante. Je voudrais prendre un niveau, puis utiliser nth-child. ou tout simplement saisir:

$('.pics').children('img').length 

comme seuil, puis utilisez:

$('.pics img:eq('+idx+')') 

De cette façon, vous continuez à monter jusqu'à ce que vous IDX avez atteint la limite, puis remis à zéro le compteur.

+0

J'ai raté ça. THX – kheya

0

Essayez ceci, à savoir enlever les marques de la parole et de crochets « GetFullImage() »

setInterval(GetFullImage,5000); 
+0

Pas une mauvaise suggestion, mais cela n'a rien à voir avec le problème. La façon dont Projapati appelle setInterval est valide. Le premier argument peut être une référence de fonction ou une chaîne de code. – InvisibleBacon