Javascript : ouvrir une div, qui se ferme si autre ouverte
11 messages • Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
Javascript : ouvrir une div, qui se ferme si autre ouverte
Bonjour,
Voilà, j'ai trois div. J'en ouvre une en cliquant sur un lien. Si je reclique sur le lien, elle se referme. Si je clique sur le lien d'une autre div qui s'ouvre aussi en javascript, alors la précédente doit se refermer.
Ca fonctionne pas .
Voilà mon chetit code :
Balise head :
Les liens :
Les divs à ouvrir :
Voyez-vous le problème, SVP
Voilà, j'ai trois div. J'en ouvre une en cliquant sur un lien. Si je reclique sur le lien, elle se referme. Si je clique sur le lien d'une autre div qui s'ouvre aussi en javascript, alors la précédente doit se refermer.
Ca fonctionne pas .
Voilà mon chetit code :
Balise head :
- Code: Tout sélectionner
function switchDiv(n)
{
var id; switch(n)
{
case "1": id = "signature";
break;
case "2": id = "envoiMP";
break;
case "3": id = "voirMP";
break;
}
document.getElementById('signature').display = "none"; document.getElementById('envoiMP').display = "none"; document.getElementById('voirMP').display = "none"; document.getElementById(id).display = "block"; }
Les liens :
- Code: Tout sélectionner
<span class="java" onClick="switchDiv(1);"> modifier la signature</span>
<span class="java" onClick="switchDiv(2);"> envoyer un MP</span>
<span class="java" onClick="switchDiv(3);"> voir les MP</span>
Les divs à ouvrir :
- Code: Tout sélectionner
<div class="baliseDiv" style="display:none;" id="signature">texte 1 </div>
<div class="baliseDiv" style="display:none;" id="envoiMP"> texte 2</div>
<div class="baliseDiv" style="display:none;" id="voirMP"> texte 3 </div>
Voyez-vous le problème, SVP
Avec
document.getElementById(id).style.display = "block"
ca fonctionnera mieux
et aussi pour les "case", pas besoin de guillemets vu que c'est des valeurs numériques
ce qui donne :
voualou
document.getElementById(id).style.display = "block"
ca fonctionnera mieux
et aussi pour les "case", pas besoin de guillemets vu que c'est des valeurs numériques
ce qui donne :
- Code: Tout sélectionner
function switchDiv(n) {
var id;
switch(n) {
case 1 : id = "signature"; break;
case 2 : id = "envoiMP"; break;
case 3 : id = "voirMP"; break;
}
document.getElementById('signature').style.display = "none";
document.getElementById('envoiMP').style.display = "none";
document.getElementById('voirMP').style.display = "none";
document.getElementById(id).style.display = "block";
}
voualou
Ca fonctionne pas.
Par contre, ça fonctionne comme ça :
Mais je n'arrive pas à faire en sorte que la div ouverte se referme aussi quand on clique sur le lien qui l'a ouvert.
Par contre, ça fonctionne comme ça :
- Code: Tout sélectionner
<head>
<title></title>
<style type="text/css">
<!--
.java{
color: #0000FF;
cursor: pointer;
}
.baliseDiv{
border: 2px ridge #AAAAAA;
}
//-->
</style>
<script type="text/javascript">
<!--
function switchDiv(n)
{
var id;
switch(n)
{
case 0:
id = "";
break;
case 1:
id = "signature";
break;
case 2:
id = "envoiMP";
break;
case 3:
id = "voirMP";
break;
}
document.getElementById('signature').style.display = "none";
document.getElementById('envoiMP').style.display = "none";
document.getElementById('voirMP').style.display = "none";
if (id!="")
document.getElementById(id).style.display = "block";
}
//-->
</script>
</head>
<body>
<span class="java" onclick="switchDiv(1)"> modifier la signature</span> |
<span class="java" onclick="switchDiv(2)"> envoyer un MP</span> |
<span class="java" onclick="switchDiv(3)"> voir les MP</span>
<br />
Les divs :
<div class="baliseDiv" style="display:none;" id="signature">
signature
<span class="java" onclick="switchDiv(0)"> Fermer</span>
</div><!--ferme baliseDiv -->
<div class="baliseDiv" style="display:none;" id="envoiMP">
envoiMP
<span class="java" onclick="switchDiv(0)"> Fermer</span>
</div><!--ferme baliseDiv -->
<div class="baliseDiv" style="display:none;" id="voirMP">
voirMP
<span class="java" onclick="switchDiv(0)"> Fermer</span>
</div><!--ferme baliseDiv -->
</body>
</html>
Mais je n'arrive pas à faire en sorte que la div ouverte se referme aussi quand on clique sur le lien qui l'a ouvert.
e-kiwi a écrit:dans ton premier exemple, je vois :
document.getElementById('signature').display = "none";
tu n'a pas mis le "stye.display", juste "display"
Euh oui, mais c'est corrigé maintenant, ça fonctionne
C'est pour refermer la div en cliquant sur le lien qui l'a ouverte, que j'ai un problème, là.
En fait :
- Je clique sur le lien -> la div correspondante s'ouvre : ça fonctionne.
- Je clique sur le lien "fermer" dans la div qui s'est ouverte -> la div correspondante se ferme : ça fonctionne.
- Une div est déjà ouverte, je clique sur un autre lien pour ouvrir une autre div -> la div déjà ouverte se referme et la nouvelle s'ouvre : ça fonctionne.
- Je clique sur un lien pour ouvrir la div et je reclique sur le même lien pour la refermer : ça, ça ne fonctionne pas.
- Je clique sur le lien -> la div correspondante s'ouvre : ça fonctionne.
- Je clique sur le lien "fermer" dans la div qui s'est ouverte -> la div correspondante se ferme : ça fonctionne.
- Une div est déjà ouverte, je clique sur un autre lien pour ouvrir une autre div -> la div déjà ouverte se referme et la nouvelle s'ouvre : ça fonctionne.
- Je clique sur un lien pour ouvrir la div et je reclique sur le même lien pour la refermer : ça, ça ne fonctionne pas.
Euh mon script marche je l'ai essayé avant de le poster
et en le modifiant j'ai obtenu ce que tu voulais :
et le html
et en le modifiant j'ai obtenu ce que tu voulais :
- Code: Tout sélectionner
<script type="text/javascript">
function switchDiv(n) {
var id;
var hide = 0;
switch(n) {
case 1 : id = "signature"; break;
case 2 : id = "envoiMP"; break;
case 3 : id = "voirMP"; break;
}
if ( document.getElementById(id).style.display == "block" ) hide = 1;
document.getElementById('signature').style.display = "none";
document.getElementById('envoiMP').style.display = "none";
document.getElementById('voirMP').style.display = "none";
if ( hide != 1 ) document.getElementById(id).style.display = "block";
}
</script>
et le html
- Code: Tout sélectionner
<span class="java" onclick="switchDiv(1)"> modifier la signature</span> |
<span class="java" onclick="switchDiv(2)"> envoyer un MP</span> |
<span class="java" onclick="switchDiv(3)"> voir les MP</span>
<div class="baliseDiv" style="display:none;" id="signature">
signature
<span class="java" onclick="switchDiv(1)"> Fermer</span>
</div>
<div class="baliseDiv" style="display:none;" id="envoiMP">
envoiMP
<span class="java" onclick="switchDiv(2)"> Fermer</span>
</div>
<div class="baliseDiv" style="display:none;" id="voirMP">
voirMP
<span class="java" onclick="switchDiv(3)"> Fermer</span>
</div>
- tompintures
- Nouveau WRInaute
- Messages: 1
- Inscription: Jeu Juin 07, 2007 18:59
MERCI !
merci bcp grace à ce p'tit bout eud'code j'ai solutionné un gros problème que j'avais !

Re: Javascript : ouvrir une div, qui se ferme si autre ouverte
Salut,
Un grand merci !!! Je n'y connais absolument rien en js, je bidouille juste un peu avec dreamweaver qui se charge de générer le codage de la page.
Donc, après moult galères, j'ai reussi grace à ton exemple à ouvrir successivement des div via des liens situés dans un autre div. En fait j'ai un div principal divisé en 2 "div" l'un à coté de l'autre et je voulais des liens texte dans le 1er div enfant pour faire apparaitre le contenu lié dans le second div enfant pour le faire fonctionner comme une frame.
J'ai trafficoté ton code à mes besoins et ça marche (du moins sous IE7, je n'ai pas d'autres navigateurs).
Encore merci, ci dessous ma "soupe" (version simplifiée avec des fonds couleurs)
Ceci-dit, peut etre y aurait il eu plus simple pour mettre en place le rendu final ?
Un grand merci !!! Je n'y connais absolument rien en js, je bidouille juste un peu avec dreamweaver qui se charge de générer le codage de la page.
Donc, après moult galères, j'ai reussi grace à ton exemple à ouvrir successivement des div via des liens situés dans un autre div. En fait j'ai un div principal divisé en 2 "div" l'un à coté de l'autre et je voulais des liens texte dans le 1er div enfant pour faire apparaitre le contenu lié dans le second div enfant pour le faire fonctionner comme une frame.
J'ai trafficoté ton code à mes besoins et ça marche (du moins sous IE7, je n'ai pas d'autres navigateurs).
Encore merci, ci dessous ma "soupe" (version simplifiée avec des fonds couleurs)
Ceci-dit, peut etre y aurait il eu plus simple pour mettre en place le rendu final ?
- Code: Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
<script type="text/javascript">
<!--
function switchDiv(n)
{
var id;
switch(n)
{
case 0:
id = "";
break;
case 1:
id = "gris";
break;
case 2:
id = "vert";
break;
case 3:
id = "rose";
break;
case 4:
id = "marron";
break;
case 5:
id = "jaune";
break;
case 6:
id = "violet";
break;
}
document.getElementById('gris').style.display = "none";
document.getElementById('vert').style.display = "none";
document.getElementById('rose').style.display = "none";
document.getElementById('marron').style.display = "none";
document.getElementById('jaune').style.display = "none";
document.getElementById('violet').style.display = "none";
if (id!="")
document.getElementById(id).style.display = "block";
}
//-->
</script>
</head>
<style type="text/css">
<!--
.java{color: #0000FF; cursor: pointer;}
#contenuBg {margin-top:0; margin-left:auto; margin-right:auto; margin-bottom:0px; height:262px; width: 705px; padding: 0px 0px 0px 0px;}
#boiteMenuG{float: left; width: 119px; height: 262px; margin-left: auto; margin-right: 0px}
#boiteLic{float: left; width: 263px; height: 262px}
.boite1{ position:fixed; background-color:#CCCCCC; width: 263px; height: 262px; z-index: 1;}
.boite2{ position:fixed; background-color:#99CC66; width: 263px; height: 262px; z-index: 2;}
.boite3{ position:fixed; background-color:#FFCCFF; width: 263px; height: 262px; z-index: 3;}
.boite4{ position:fixed; background-color:#CC9900; width: 263px; height: 262px; z-index: 4;}
.boite5{ position:fixed; background-color:#FFFF33; width: 263px; height: 262px; z-index: 5;}
.boite6{ position:fixed; background-color:#CC99FF; width: 263px; height: 262px; z-index: 6;}
#boiteTexte{float: left; width: 268px; height: 262px}
#boiteMenuD{float: left; width: 55px; height: 262px; margin-right: auto}
-->
</style>
<body>
<div id="contenuBg">
<div id="boiteMenuG">
<p><span class="java" onclick="switchDiv(1)"> gris </span></p>
<p><span class="java" onclick="switchDiv(2)"> vert </span></p>
<p><span class="java" onclick="switchDiv(3)"> rose </span></p>
<p><span class="java" onclick="switchDiv(4)"> marron</span></p>
<p><span class="java" onclick="switchDiv(5)"> jaune</span></p>
<p><span class="java" onclick="switchDiv(6)"> violet</span></p>
</div>
<div id="boiteLic"></div>
<div id="boiteTexte">
<div class="boite1" style="display:block;" id="gris"></div>
<div class="boite2" style="display:none;" id="vert"></div>
<div class="boite3" style="display:none;" id="rose"></div>
<div class="boite4" style="display:none;" id="marron"></div>
<div class="boite5" style="display:none;" id="jaune"></div>
<div class="boite6" style="display:none;" id="violet"></div>
</div>
<div id="boiteMenuD"></div>
</div>
</body>
</html>
11 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Tous les raccourcis-clavier de Google Chrome (shortcuts)
- Google va ouvrir un centre de recherche à Shanghai
- Googlebot analyse certains codes JavaScript
- Google Answers ferme ses portes
- Google Analytics désormais ouvert à tous
- Affichage de la description DMOZ dans Google
- Affichage de la description DMOZ dans Yahoo
- Google va ouvrir un nouveau bureau dans le Michigan
- Google ouvre son 2nd centre de R&D hors US à Zurich
- Google ferme l'API SOAP aux nouveaux développeurs
Consultez la description détaillée des produits ou services de Google suivants : Google API, Google Chrome, Google Related Links, Google Compute
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum