Soucis photo et légende aléatoire[javascript]

Résolu/Fermé
Jearus8 Messages postés 45 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 23 juin 2009 - 15 mai 2008 à 14:28
Jearus8 Messages postés 45 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 23 juin 2009 - 15 mai 2008 à 15:18
Bonjour,

J'ai un soucis, pour le boulot, je dois faire un site et dans une des pages, il y a un emplacement ou deux photos changent toute les deux secondes.
Jusque là pas de soucis, cependant, le soucis intervient quand j'essaye de faire correspondre pour chaque photo une légende contenue elle aussi dans la base de donnée!

Probléme, si les photos s'altérnent bien, la légende reste fixe..
Lapin comprendre!

mon code:

..récupération des info par une requete php et structure du document...

<script language="javascript">

var element= "img/<?php echo($image);?>";
var element2= "img/<?php echo($image2);?>";
var legende1= "<?php echo($legende1);?>";
var legende2= "<?php echo($legende2);?>";
var pic=new Array( "" , element , element2 ); // tableau des noms d'images
var lege=new Array( "" , legende1 , legende2 ); // tableau des noms d'images
var mis=new Array(2); // tableau des indicateurs 'image tirée'
for(i=1;i<3;i++) {mis[i]=0;} // Initialisation à zéro des indicateurs 'image déjà tirée'
total=0; // pour trouver rapidement la dernière image
for(i=1;i<2;i++) // on va boucler sur nombre d'images moins un
{ mis[i]=1+Math.round(Math.random()*1); // tirer aléatoirement un nombre dans mis(i)
trouve=0; // supposons que l'image ne soit pas encore tirée
for (j=1;j<i;j++) // voyons si cette image a été tirée
{if (mis[j]==mis[i]) {trouve=1;} } // si oui
if (trouve==1) {i=i-1;} // recommencer à tirer
if (trouve==0) {total=total+mis[i];} // sinon la compter
}
mis[2]=3-total;
var i=1+Math.round(Math.random()*1);
function change() // la fonction temporisée qui change d'image
{
document.pic.src=pic[mis[i]];
lege=lege[mis[i]];
i++;if(i>2){i=1;}
setTimeout("change()", 1000);// Toutes les 2 secondes
}
</script>
<body onLoad="change()">
<script>
document.write("<img name='pic'src='"+pic[mis[i]]+"' title='"+pic[mis[i]]+"'>");
document.write("legende : ");document.write(lege[i]);
</script>
</body>
</html>
A voir également:

2 réponses

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
15 mai 2008 à 14:34
Bonjour,

Je pense que le code correct est le suivant
document.write("<img name='pic' alt='"+lege[i]+"' src='"+pic[mis[i]]+"' title='"+pic[mis[i]]+"'>");


Utilise alt pour indiquer ta légende qui sera affichée lorsque le curseur sera sur ta photo.

A plus
0
Jearus8 Messages postés 45 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 23 juin 2009
15 mai 2008 à 14:36
Merci pour la rapidité,

mais j'aimerais bien que la légende apparaissent sous la photo..

Merci d'avance;)
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
15 mai 2008 à 14:53
Bonjour,

Ok, dans ce cas-là le code devrait être le suivant
document.write("<img id='pic' src='"+pic[mis[i]]+"' title='"+pic[mis[i]]+"'>");
document.write("legende : <input type='text' id='lege' value='" + lege[i]+" readonly=1>");

et dans ta fonction change
document.photo.pic.src=pic[mis[i]];
document.photo.lege.value=lege[mis[i]]; 


Tu dois aussi ajouter après la balise <body> la balise suivante: <form name=photo> et avant la balise </body> la balise </form>

A plus
0
Jearus8 Messages postés 45 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 23 juin 2009
15 mai 2008 à 15:03
Merci beaucoup ça marche nickel!!!

Pour ma culture, comme ce fait-il que le commentaire ne tournait pas?!?

Est-ce l'utilisation du <form> qui résoud ce probléme?

Merci encore ;)
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384 > Jearus8 Messages postés 45 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 23 juin 2009
15 mai 2008 à 15:14
De rien, le forum est là pour çà.

Concernant ta question, ta légende était du texte fixe dans le code html de ta page, le fait d'avoir utilisé la balise <input> permet de changer la valeur de cette zone dynamiquement à condition que la balise soit comprise entre <form> et </form>.

A plus

PS: N'oublie pas d'indiquer que le problème est résolu
0
Jearus8 Messages postés 45 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 23 juin 2009 > Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010
15 mai 2008 à 15:18
OK,

merci pour l'info, c'est trés bon à savoir ça ;)

Bonne continuation.
0