Slideshow à rotation aléatoire

Résolu
edelendil Messages postés 16 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 18 février 2009 - 14 avril 2006 à 23:40
edelendil Messages postés 16 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 18 février 2009 - 16 avril 2006 à 19:15
Salut, dans le cadre d'une banniere j'envisage d'utiliser comme fond
une selection aléatoire d'images choisies parmis des 10ene disponibles.
Le but est de repeter ce choix toutes les 3 secondes pour obtenir un
effet slideshow automatique et non répetitif (je n'aipas encore codé la
verification evitant d'avoir deux fois la même image en meme temps mais
ca ne devrait pas etre le plus difficile).

Parceque pour 'linstant j'arrive à prendre les images de maniere
aléatoires et à les afficher mais pas moyen de lancer celà en boucler,
j'utilise (sans doute mal) la fonction SetInterval mais rien ne se
passe.



Enfin bref voila le code



<SCRIPT LANGUAGE="JavaScript">

// On stock ici les images

var tabImgSave = new Array;

tabImgSave[0] = 'forme_01.gif';

tabImgSave[1] = 'forme_02.gif';

tabImgSave[2] = 'forme_03.gif';

tabImgSave[3] = 'forme_04.gif';

tabImgSave[4] = 'forme_05.gif';

tabImgSave[5] = 'forme_06.gif';

tabImgSave[6] = 'forme_07.gif';

tabImgSave[7] = 'forme_08.gif';



var nb_img = tabImgSave.length;



function affichage(){

//on en prend 3 au hasard

var tabImgAff = new Array;

for (i=0;i<3 ;i++ )

{

var rand = Math.floor( Math.random()*(nb_img));

tabImgAff[i]=tabImgSave[rand];

}

// et on les affiche

for (i=0;i<3 ;i++ ){

document.write('<td align=center></td>');

}

}

</SCRIPT>

</HEAD>





<SCRIPT LANGUAGE=\"JavaScript\"> var b = setInterval(affichage(),3000);</SCRIPT> <!-- et là ca ne se fait qu'une fois-->




Merci d'avance

5 réponses

Phil_Free Messages postés 275 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 28 avril 2006 11
15 avril 2006 à 15:36
Salut,

Et si tu l'écrivais comme ça:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>SlideShow</title>
<script type="text/javascript">
<!--
function affichage(){

// On stock ici les images
var tabImgSave = new Array;
tabImgSave[0] = 'forme_01.gif';
tabImgSave[1] = 'forme_02.gif';
tabImgSave[2] = 'forme_03.gif';
tabImgSave[3] = 'forme_04.gif';
tabImgSave[4] = 'forme_05.gif';
tabImgSave[5] = 'forme_06.gif';
tabImgSave[6] = 'forme_07.gif';
tabImgSave[7] = 'forme_08.gif';

var nb_img = tabImgSave.length;

//on en prend 1 au hasard
var tabImgAff ;

var rand = Math.floor( Math.random()*(nb_img));
tabImgAff = tabImgSave[rand];

// et on l'affiche

toThis = "";

if (document.getElementById) {
document.getElementById("textDiv").innerHTML = toThis;
}
else if (document.all) {
document.all["textDiv"].innerHTML = toThis;
}

}
// -->
</script>
</head>

</html>
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 avril 2006 à 05:56
Bonjour,

dans la fonction appelée affichage(), il y a document.write

lorsque la page a été totalement affichée ( a été
interprété ), et ce sera le cas au 2ème déclenchement de cette
fonction, document.write commence par effacer toute la page...
y compris le javascript.

pour s'en convaincre, click droit + afficher la source :
la page ne contiendra que les 3 <td align=center></td>'
et rien d'autre.

Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 avril 2006 à 06:59
je ne sais pas pourqoui j'ai dit au 2ème déclenchement ???

il faut lire "ce sera le cas lorsque cette fonction sera appelée".

Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 avril 2006 à 15:46
c'est une solution...
mais pourquoi les tests document.getElementById et document.all
document.getElementById("textDiv").innerHTML = toThis;
tout court ?
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
edelendil Messages postés 16 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 18 février 2009
16 avril 2006 à 19:15
Voila en appliquant la solution proposée a mon code dejà tappé j'arrive
a un résultat tout a fait satisfaisant, merci à tous ceux qui ont
répondu
0
Rejoignez-nous