Diaporama conflit setTimeout et on click

laser45 Messages postés 8 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 10 novembre 2010 - 19 sept. 2010 à 21:09
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 19 sept. 2010 à 21:43
bonsoir
voila j'ai un probleme de script ( et oui ... c'est pas bien original)

voici donc monn script :

<script type="text/javascript">

ejs_photo = new Array;

<?
$a = 0;
$handle = opendir("diaporama/chevrerie"); 
while (($file = readdir())!=false) { 
clearstatcache(); 
if($file!=".." && $file!=".") 
{
$nom[$compt] = "$file";
$compt++;
$a++;
}
}
if ($compt > 0 )  sort($nom);
for($i=0;$i < $compt;$i++) 
     { 
        echo "ejs_photo[$i] = 'diaporama/chevrerie/$nom[$i]';";
     } 

echo "var nbr_photo = $a"; 	

closedir($handle); 
?>

function ejs_aff_photos(num)
{
if (num+1<nbr_photo)
 {	
 var obj = 'ejs_aff_photos('+(num+1)+')'; 
 }
else
 {
 var obj = 'ejs_aff_photos(0)';
 }

if(document.getElementById)
{
 ejs_fin = "";
  if(num!=0)
   ejs_fin += "";

  if(num!=(ejs_photo.length-1))
   ejs_fin += "";

document.getElementById("ejs_photo_box").innerHTML = "<CENTER>

"+ejs_fin+"</CENTER>";

}

//var obj = "'ejs_aff_photos("+(num+1)+");return(false)'"; 

setTimeout(obj,3000); 	
}

window.onload = new Function("ejs_aff_photos(0)")

</script>



mon probleme c'est lorque je click sur une fleche pour revenir en arriere ou avancer, je reviens bien en arriere ( num-1) mais le timeout viens aussi et tous clignote dans tous les sens

voici un lien vers le probleme

le lien

si vous pouviez m'aider ce serai sympa

a+ et merci
Christophe

1 réponse

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
19 sept. 2010 à 21:43
Bonjour,
la 1st chose à faire est d'avoir une variable globale iTimer
récupérer le Timer du setTimeout
var iTimer = null;
la 2nd est de l'affecter lors du setTimeout
var iTimer = setTimeout(...
la 3th est de killer ce iTtimer en début de fonction, avant dans relancer un autre
clearTimeout( iTimer);

;O)
0
Rejoignez-nous