Bonjour à tous,

J'ai 3 DIV,

Comment les afficher l'un a la place de l'autre avec
une pause de 3 secondes ?

Et revenir sur lr premier.

Merci de m'aider.
Si je comprend bien, tu as trois divs, tu en affiches 1, tu attends 3 secondes, puis tu veux en afficher un autre, tu attends trois secondes, puis tu affiches le troisième, tu attends 3 secondes puis tu reviens au premier.

Ca doit tourner en boucle tout le temps, ou s'arrêter une fois qu'on revient sur le premier ?
Quelques lignes de javascript devraient faire l'affaire.

Code HTML :

<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>


Code javascript :

var div1 = document.getElementById('div1')
var div2 = document.getElementById('div2')
var div3 = document.getElementById('div3')

//Je fais "disparaitre" 2 des 3 divs
div1.style.display = 'block'
div2.style.display = 'none'
div3.style.display = 'none'

function affichage(){
if(div1.style.display == 'block'){//Si div 1 est visible, je le rend invisible et je rend div2 visible
div1.style.display = 'none'
div2.style.display = 'block
}
else if(div2.style.display == 'block){//Si div 2 est visible, je le rend invisible et je rend div3 visible
div2.style.display = 'none'
div3.style.display = 'block'
}
else if(div3.style.display == 'block'){//Si div 3 est visible, je le rend invisible et je rend div1 visible
div3.style.display = 'none'
div1.style.display = 'block'
}

setTimeout(3000, affichage) //Je rappelle la fonction d'affichage avec un temps mort de 3000 millisecondes (3 secondes)
}

affichage()//lancement au chargement de la page
Ok pour le code, mais ne tourne pas !


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nouvelle page 2</title>

<SCRIPT LANGUAGE="JavaScript">
var div1 = document.getElementById('div1')
var div2 = document.getElementById('div2')
var div3 = document.getElementById('div3')

//Je fais "disparaitre" 2 des 3 divs
div1.style.display = 'block'
div2.style.display = 'none'
div3.style.display = 'none'

function affichage(){
if(div1.style.display == 'block'){//Si div 1 est visible, je le rend invisible et je rend div2 visible
div1.style.display = 'none'
div2.style.display = 'block'
}
else if(div2.style.display == 'block){//Si div 2 est visible, je le rend invisible et je rend div3 visible
div2.style.display = 'none'
div3.style.display = 'block'
}
else if(div3.style.display == 'block'){//Si div 3 est visible, je le rend invisible et je rend div1 visible
div3.style.display = 'none'
div1.style.display = 'block'
}

setTimeout(3000, affichage) //Je rappelle la fonction d'affichage avec un temps mort de 3000 millisecondes (3 secondes)
}
</SCRIPT>

</head>

<body bgcolor="#957000">

<div>
<p align="center">
<img style="border:solid 5px #552B00;" border="0" src="images/defil2.gif" width="465" height="105">
</div>

<p align="center">
<div id="div1" align="center" style="position:absolute; top:25px; width:100%">
<font color="#4F2700" size="5" face="Comic Sans MS">
Nouvelle Rubrique<br>
Les Radio-Clubs<br>
---<BR>
</div>


<p align="center">
<div id="div2" align="center" style="position:absolute; top:25px; width:100%">
<font color="#4F2700" size="5" face="Comic Sans MS">
***Nouvelle Rubrique<br>
***Les Radio-Clubs<br>
***---<BR>
</div>


<p align="center">
<div id="div3" align="center" style="position:absolute; top:25px; width:100%">
<font color="#4F2700" size="5" face="Comic Sans MS">
---Nouvelle Rubrique<br>
---Les Radio-Clubs<br>
------<BR>
</div>

<SCRIPT LANGUAGE="JavaScript">
affichage()//lancement au chargement de la page
</SCRIPT>

</body>

</html>
Ça m'a l'air un peu compliqué pour pas grand chose tout ça. Il suffit de stocker les elements (div) dans un tableau et d'effectuer une rotation à chaque appel de la fonction affichage().

A mettre tout en bas de la page :


var arr = [
	document.getElementById('div1'),
	document.getElementById('div2'),
	document.getElementById('div3')
];

function affichage() {
	for (var i = 0; i < arr.length; i++) {
		arr[ i ].style.display = i == 0 ? 'block' : 'none';
	}

	// rotation du tableau
	var t = arr.shift();
	arr.push(t);
		
	setTimeout(affichage, 3000);
}

affichage();


arr[ i ].style.display = i == 0 ? 'block' : 'none'; attention à cette ligne, il faut virer les espaces autour de i (c'est le forum qui déconne).
Modifié par jb_gfx (03 May 2012 - 18:29)
Bonsoir à toutes et à tous,

voici une solution qui fonctionne, sans passer par un tableau.

Voici le code HTML :
<!DOCTYPE html>
<html lang='fr'>
<head>
<!-- ==== -->
<!-- Meta -->
<!-- ==== -->

<meta http-equiv="Content-Type"        content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type"  content="text/css" />

<title>Boîte Tournante !</title>

<!-- ========== -->
<!-- JavaScript -->
<!-- ========== -->

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

<!-- ====================== -->
<!-- Cascading Style Sheets -->
<!-- ====================== -->

<link rel="stylesheet" type="text/css" href="Styles.css" />
</head>

<body>

<!-- ==================================== -->
<!-- Les Boîtes à afficher successivement -->
<!-- ==================================== -->

<div id="ailleurs">
	<div class="monDiv" id="un">	<h1>Boite un</h1>		<p>bla bla bla</p></div>
	<div class="monDiv" id="deux">	<h1>Boite deux</h1>		<p>bla bla bla</p>
															<p>bla bla bla</p></div>
	<div class="monDiv" id="trois">	<h1>Boite trois</h1>	<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p></div>
	<div class="monDiv" id="quatre"><h1>Boite quatre</h1>	<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p></div>
	<div class="monDiv" id="cinq">	<h1>Boite cinq</h1>		<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p></div>
	<div class="monDiv" id="six">	<h1>Boite six</h1>		<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p></div>
	<div class="monDiv" id="sept">	<h1>Boite sept</h1>		<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p></div>
	<div class="monDiv" id="huit">	<h1>Boite huit</h1>		<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p></div>
	<div class="monDiv" id="neuf">	<h1>Boite neuf</h1>		<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p>
															<p>bla bla bla</p></div>
</div>

</body>
</html>


Voici le code CSS :
body {
			background-color		: grey;
}

/*-------------------------------------------------------*/
/*     les spécificités communes à toutes les boites     */
/*-------------------------------------------------------*/

#ailleurs {
			margin					: 0 auto;
}

.monDiv {
			display					: none;
			padding					: 10px;
			border					: 3px solid black;
}

h1 {
			text-align				: center;
}

/*-------------------------------*/
/*     les boites à afficher     */
/*-------------------------------*/

#un		{
			background-color		: yellow;
			width					: 150px;
}

#deux {
			background-color		: green;
			width					: 200px;
}

#trois {
			background-color		: blue;
			width					: 250px;
}

#quatre {
			background-color		: red;
			width					: 300px;
}

#cinq {
			background-color		: white;
			width					: 350px;
}

#six {
			background-color		: pink;
			width					: 400px;
}

#sept {
			background-color		: red;
			width					: 350px;
}

#huit {
			background-color		: green;
			width					: 300px;
}

#neuf {
			background-color		: cyan;
			width					: 250px;
}


Et pour terminer, le code Javascript :
window.onload = function ()
{
	Manege.Init(1000);
	Manege.Lancer();
};

/********************************/
/*                              */
/*     Le Manège des Boites     */
/*                              */
/********************************/

var Manege = {

delay: null,
time: 0,			/* temps en milliseconde */

addr: null,			/* adresse de "ailleurs" */
node: null,			/* liste des divisions   */

prec: 0,			/* Boîte précédente      */
suiv: 0,			/* Boîte suivante        */

/*========================*/
/*     Initialisation     */
/*========================*/

Init: function (temps)
{
	this.delay		= null;
	this.time		= parseInt(temps);

	this.addr		= document.getElementById('ailleurs');
	this.node		= this.addr.getElementsByTagName('div');

	this.prec		= 0;
	this.suiv		= 0;

	this.Afficher();
},

/*===============================*/
/*     on affiche les boîtes     */
/*===============================*/

Afficher: function ()
{
	this.node[this.prec].style.display = "none";
	this.node[this.suiv].style.display = "block";

	/*------------------------------------------------------*/
	/*     Centrage de la boîte en largeur dans la page     */
	/*------------------------------------------------------*/

	var large = parseInt(this.node[this.suiv].offsetWidth);
	var posit = Math.round((screen.availWidth - large) / 2);

	this.addr.style.width = large + "px";
	this.addr.style.left  = posit + "px";

	/*--------------------------------------*/
	/*     On passe à la boîte suivante     */
	/*--------------------------------------*/

	this.prec = this.suiv++;
	if (this.suiv >= this.node.length)	this.suiv = 0;	
},

/*=============================*/
/*     Lancement du manège     */
/*=============================*/

Lancer: function ()
{
	window.clearInterval(this.delay);
	this.delay = window.setInterval("Manege.Afficher()", this.time);
},

/*=========================*/
/*     Arrêt du manège     */
/*=========================*/

Stopper: function ()
{
	window.clearInterval(this.delay);
	this.delay = null;
}

};


Cela a été testé sur MSIE 8.0, Firefox 12.0, Google Chrome 18.0, Apple Safari 5.1.5 et opera 11.62 !

@+
Modifié par Artemus24 (04 May 2012 - 03:14)