Probleme de boucle [Résolu]

Signaler
Messages postés
15
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
11 janvier 2011
-
Messages postés
15
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
11 janvier 2011
-
Bonjour,
Je voudrais utiliser un script de fondu d'image mais je n'arrive pas à le mettre en boucle.
Le script s'éxécute correctement mais j'ai une erreur à la fin.
J'ai essayer de faire une boucle avec FOR, mais ca ne marche pas non plus.

Voici le code :

var visuel_n=0;
function Visuel_Fondu()
{
 if(document.all)
 {
  document.getElementById("visuel_" + VisuelPosChange).filters.alpha.opacity=visuel_n;
  visuel_n+=5;
  if ( visuel_n<= 100 )
  {
   setTimeout("Visuel_Fondu()", 50);
   return 0;
  }
 }
 else
 {
  document.getElementById("visuel_" + VisuelPosChange).style.setProperty("-moz-opacity", visuel_n, "");
  visuel_n+=0.05;
  if ( visuel_n<= 1 )
  {
   setTimeout("Visuel_Fondu()", 50);
   return 0;
  }
 }
 visuel_n=0;
 document.getElementById("visuel").style.background="url('" + VisuelTab[VisuelPosChange][0] + "') -4px 0px no-repeat";
 setTimeout("Visuel_Clear()", 100); //supprime clignotement sous FF
 //document.getElementById("visuel").innerHTML="";
 //setTimeout("Visuel_Defil()", 3000);
}
function Visuel_Clear()
{
 document.getElementById("visuel").innerHTML="";
 setTimeout("Visuel_Defil()", 3000);
}
var VisuelPos=0;
var VisuelPosChange;
function Visuel_Defil()
{
 VisuelPosChange=VisuelPos; 
 VisuelPos++;
 if ( VisuelTab.length <= VisuelPos )
  VisuelPos=0;
  
 if ( VisuelTab[VisuelPosChange][1] == 1 )
  document.getElementById("visuel").innerHTML+="";
 else
 {
  setTimeout("Visuel_Defil()", 10);
  return 0;
 }
 Visuel_Fondu();
}




var VisuelTab = [
 ["image1.jpg",1],
 ["image2.jpg",1],
 ["image3.jpg",1],
];
Visuel_Defil();




Merci d'avance pour votre aide.

5 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
Tu bosses surement avec IExplorer...
Ce n'est pas un problème de boucle
mais de déclaration de tableau
ta déclaration
var VisuelTab = [
 ["image1.jpg",1],

 ["image2.jpg",1],
 ["image3.jpg",1] ,

];
IExplorer retournera une longueur de tableau de 4,
les autres 3, le dernier après la virgule et non défini, n'étant pas pris en
compte.

Comme tu testes
if ( VisuelTab.length < = VisuelPos )
cela plante sur le
dernier indice.
Supprimes la dernière virgule ou testes si l'élément est
défini
if(
VisuelTab[VisuelPosChange] && VisuelTab[VisuelPosChange][1] == 1
)
dans ce cas attention à l'incrémentation de la variable VisuelPos sur le dernier passage.

;O)
Messages postés
419
Date d'inscription
dimanche 31 août 2003
Statut
Membre
Dernière intervention
19 avril 2010
1
Salut,

impossible de tester sans les elements du "body"

L.
Messages postés
15
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
11 janvier 2011

Dans le DODY, il suffit de mettre à l'endroit ou l'on veut l'animation :

<script type="text/javascript" src="fondu.js"></script>

"width: 200" et "height: 200" correspondent à la taille des 3 images.

Le script du 1er message étant dans un fichier "fondu.js".

Merci Leris de prendre le temps d'y jeter un oeil.
JF

PS : Je ne sais pas si on peut joindre les fichiers, cela aurait été plus simple.
Messages postés
1788
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
24 juillet 2021
132
tu peut toujour essayer cette source simple a mettre en oeuvre

http://www.javascriptfr.com/codes/DIAPO-FONDU-ENCHAINE_48063.aspx
Messages postés
15
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
11 janvier 2011

Excellent !


Il suffisait d’enlever la virgule en effet.


Merci PetoleTeam.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>