18043 sujets
Questions générales et questions de débutants
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 ?
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 :
Code javascript :
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 :
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)
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 :
Voici le code CSS :
Et pour terminer, le code Javascript :
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)
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)