IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Javascript: montrer/cacher un DIV


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Javascript: montrer/cacher un DIV
    Bonjour à tous.

    J'ai quelques soucis avec mon code javascript (je suis plus doué en php, mais il faut bien utiliser du js de temps en temps !).

    Voilà ce que je souhaite faire:
    Deux boutons, deux div.
    Lorsque je clique sur le bouton 1, la div A s'ouvre.
    Lorsque je clique sur le bouton 2, la div B s'ouvre.

    Jusque là, rien de bien compliqué me direz vous.

    Maintenant, ce que je veux, c'est que, lorsque je clique sur 1, si B est ouvert, il se ferme (une seule div ouverte à la fois).
    De même, si je clique sur 2, B va s'ouvrir, mais je veux être sur que A soit fermée.


    J'ai créé un code pour cela, ca fonction (you-hou).

    Problème:

    Je veux aussi que, lorsque je clique sur 1, si A est déjà ouvert, il se ferme.
    Je veux aussi que, lorsque je clique sur 2, si B est déjà ouvert, il se ferme.

    En résumé:
    Clic: bouton 1:
    - A est ouvert, il se ferme
    - A n'est pas ouvert, il s'ouvre, et B se ferme (si ouvert)
    Clic bouton 2:
    - B est ouvert, il se ferme
    - B n'est pas ouvert, il s'ouvre, et A se ferme (si ouvert).

    Ca peut sembler simple... mais je n'y arrive pas !


    Voici mon CSS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <style type="text/css" media="all">
    	/* Ce style CSS ne dois pas être enlevé, sinon les divs ne se cacherons pas ... */
    	.cachediv {
    		visibility: hidden;
    		overflow: hidden;
    		height: 1px;
    		margin-top: -1px;
    		position: absolute;
    	}
    	.showdiv {
    		visibility:visible;
    		overflow:visible;
    	}
    </style>
    Mon Javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <script type="text/javascript">
    	/*
    	* Montre / Cache un div
    	*/
    	function DivStatus( nom, numero )
    		{
    			var divID = nom + numero;
     
    			if ( document.getElementById && document.getElementById( 'mondiv1' ) ) // Pour les navigateurs récents
    				{
    					Pdiv1 = document.getElementById( 'mondiv1' );
    					PcH1 = true;
    		 		}
    			else if ( document.all && document.all[ 'mondiv1' ] ) // Pour les veilles versions
    				{
    					Pdiv1 = document.all[ 'mondiv1' ];
    					PcH1 = true;
    				}
    			else if ( document.layers && document.layers[ 'mondiv1' ] ) // Pour les très veilles versions
    				{
    					Pdiv1 = document.layers[ 'mondiv1' ];
    					PcH1 = true;
    				}
    			else
    				{
     
    					PcH1 = false;
    				}
     
     
    			if ( document.getElementById && document.getElementById( 'mondiv2' ) ) // Pour les navigateurs récents
    				{
    					Pdiv2 = document.getElementById( 'mondiv2' );
    					PcH2 = true;
    		 		}
    			else if ( document.all && document.all[ 'mondiv2' ] ) // Pour les veilles versions
    				{
    					Pdiv2 = document.all[ 'mondiv2' ];
    					PcH2 = true;
    				}
    			else if ( document.layers && document.layers[ 'mondiv2' ] ) // Pour les très veilles versions
    				{
    					Pdiv2 = document.layers[ 'mondiv2' ];
    					PcH2 = true;
    				}
    			else
    				{
     
    					PcH2 = false;
    				}
     
    		if ( divID == 'mondiv1' )		
    			if ( PcH1 )
    				{
    					Pdiv1.className = ( Pdiv1.className == 'cachediv' ) ? '' : 'cachediv';
    				}
    				else{
    					Pdiv1.className = ( Pdiv1.className == 'showdiv' ) ? '' : 'showdiv';
    				}
    			if ( PcH2 )
    				{
    					Pdiv2.className = ( Pdiv2.className == 'cachediv' ) ? '' : 'cachediv';
    				}
    		}
    		if ( divID == 'mondiv2' )		
    			if ( PcH2 )
    				{
    					Pdiv2.className = ( Pdiv2.className == 'cachediv' ) ? '' : 'cachediv';
    				}
    				else{
    					Pdiv2.className = ( Pdiv2.className == 'showdiv' ) ? '' : 'showdiv';
    				}
    			if ( PcH1 )
    				{
    					Pdiv1.className = ( Pdiv1.className == 'cachediv' ) ? '' : 'cachediv';
    				}
    		}
     
    }
     
     
    </script>

    Et un de mes divs (ils sont identiques, pas besoin d'en poster deux):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div name="'mondiv1'" id="'mondiv1'" class="showdiv" >
            <div style="border: 1px solid black; background-color: whitesmoke; margin-bottom: 2px;">
    CONTENU
            </div>
          </div>
    J'utilisais un autre code précédement (plus compliqué), mais qui fonctionnait. J'appelais d'abord une fonction pour fermer toutes les div, puis une autre pour ouvrir celle que je voulais... le problème, c'est que je ne pouvais donc jamais tout fermer...

    Pourriez-vous m'aider ?

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Je ferais quelque chose du genre:

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    function DivStatus(le_bouton)
    {
       var div1 = document.getElementById("mondiv1");
       var div2 = document.getElementById("mondiv2");
     
       if(le_bouton == "bouton1")
       {
            if(div1.className == "cachediv")
                  div1.className == "showdiv";
            else
                  div1.className == "cachediv";
     
            if(div2.className == "showdiv")
                  div1.className == "cachediv";
       }
       else
       {
            if(div2.className == "cachediv")
                  div2.className == "showdiv";
            else
                  div2.className == "cachediv";
     
            if(div1.className == "showdiv")
                  div2.className == "cachediv";
       }
    }

    Veillez bien à déclarer vos variables Javascript avec "var".
    Et les appels de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DivStatus("bouton1");
    DivStatus("bouton2");
    Faites attention à vos doublages de quottes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id="'div1'" //choisissez l'un (") ou l'autre (') mais pas les deux

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci du coup de main

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. montrer et cacher des div dynamiquement
    Par kanabzh29 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/09/2008, 15h49
  2. montrer/cacher div a partir d'un <select><option>
    Par dalmas dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/09/2008, 16h56
  3. [DOM] Montrer/Cacher des blocs DIV
    Par Overstone dans le forum Général JavaScript
    Réponses: 25
    Dernier message: 09/08/2007, 10h38
  4. [Problème] Avec un javascript pour montrer/cacher un div
    Par draho dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 01/10/2006, 17h02
  5. Afficher, cacher plusieurs divs
    Par Buku dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/03/2005, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo