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 :

Cacher des DIV petit soucis


Sujet :

JavaScript

  1. #1
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut Cacher des DIV petit soucis
    Bonjour a tous !
    Comment allez vous ?
    Moi ca va un peu mais je me tire les cheveux avec Javascript.
    Je vous explique, je cache des DIV et je les affiches mais le problèmes c'est que je voudrais que quand je veux afficher une DIV toutes les autres se cache alors voilà mon script actuel:

    Code 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
     
    <script type="text/javascript">
    	/*
    	* Montre / Cache un div
    	*/
    	function DivStatus( nom, numero )
    		{
     
     
    			var divID = nom + numero;
    			if ( document.getElementById && document.getElementById( divID ) ) // Pour les navigateurs récents
    				{
    					Pdiv = document.getElementById( divID );
    					PcH = true;
    		 		}
    			else if ( document.all && document.all[ divID ] ) // Pour les veilles versions
    				{
    					Pdiv = document.all[ divID ];
    					PcH = true;
    				}
    			else if ( document.layers && document.layers[ divID ] ) // Pour les très veilles versions
    				{
    					Pdiv = document.layers[ divID ];
    					PcH = true;
    				}
    			else
    				{
     
    					PcH = false;
    				}
    			if ( PcH )
    				{
    					Pdiv.className = ( Pdiv.className == 'cachediv' ) ? '' : 'cachediv';
    				}
    		}
     
    	/*
    	* Cache tous les divs ayant le même préfixe
    	*/
    	function CacheTout( nom )
    		{	
    			var NumDiv = 1;
    			if ( document.getElementById ) // Pour les navigateurs récents
    				{
    					while ( document.getElementById( nom + NumDiv) )
    						{
    							SetDiv = document.getElementById( nom + NumDiv );
    							if ( SetDiv && SetDiv.className != 'cachediv' )
    								{
    									DivStatus( nom, NumDiv );
    								}
    							NumDiv++;
    						}
    				}
    			else if ( document.all ) // Pour les veilles versions
    				{
    					while ( document.all[ nom + NumDiv ] )
    						{
    							SetDiv = document.all[ nom + NumDiv ];
    							if ( SetDiv && SetDiv.className != 'cachediv' )
    								{
    									DivStatus( nom, NumDiv );
    								}
    							NumDiv++;
    						}
    				}
    			else if ( document.layers ) // Pour les très veilles versions
    				{
    					while ( document.layers[ nom + NumDiv ] )
    						{
    							SetDiv = document.layers[ nom + NumDiv ];
    							if ( SetDiv && SetDiv.className != 'cachediv' )
    								{
    									DivStatus( nom, NumDiv );
    								}
    							NumDiv++;
    						}
    				}
    		}
    </script>
    Code Html:
    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
     
    <div class="ag9">
     
    <a href="javascript:DivStatus( 'mondiv', '1' )"><img src="images/agimgpsd_09.jpg" class="image9" /></a>
     
    </div>
     
     
     
    <div class="image10">
     
     
     
    </div>
     
     
     
    <div id="texte">
     
     
     
    <div class="image11">
    	<div name="mondiv2" id="mondiv2" class="cachediv">
            TEXTE CACHER AU DEBUT ET AFFICHER APRES
    	</div>
    </div>
    </div>
    Code CSS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .cachediv {
    	visibility: hidden;
    	overflow: hidden;
    	height: 1px;
    	margin-top: -1px;
    	position: absolute;
    }
    Voilà mes codes sources.

    Merci bien a plus tard

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Dans le code HTML, les div n'ont pas d'ID... erreur de copier/coller ?

    Et la fonction DivStatus va faire perdre à tes div leur classe par défaut (ag9 et image10).

  3. #3
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Coucou !

    Alors non ce n'est pas des erreurs de copier coller c'est des erreurs personnel. Faut que je mette quoi pour améliorer alors ?

    Tu saurais pour cacher toutes les DIV avant dans afficher une nouvelle ?

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut Pour répondre à ta question...
    Oui on peut cacher toute les autres div avant d'en afficher une nouvelle ...

    Sans me calquer sur ta source , voici un petit exemple très simple
    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
     
    --- Javascript ---
                    function masqueAutreDiv(obj) {
    					var myParent = obj.parentNode;
     
    					listDiv = myParent.getElementsByTagName('DIV');
     
    					for(var i = 0 ; i < listDiv.length; i++){
    							listDiv[i].style.visibility = 'hidden';
    						}
    						 obj.style.visibility = 'visible';
                    }
    --- Javascript ---
     
    --- Coté html ---
    <div>
                    <div onclick="masqueAutreDiv(this)">Première</div>
                    <div onclick="masqueAutreDiv(this)">Deuxieme</div>
                    <div onclick="masqueAutreDiv(this)">Troisième</div>
                    <div onclick="masqueAutreDiv(this)">Quatrième</div>
    </div>
     
    --- Coté html ---
    Explication :
    Je passe en paramètre , l'objet que je veux garder afficher , après je parcours tout le contenant, en récupèrant tous les éléments de type "div" , je les masques toute , PUIS je réaffiche celle sur laquelle j'ai cliqué.

    Si tu connais le nombre d'élément tu peux utiliser une boucle lié à tes id.

    Coordialement

  5. #5
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Bonjour a tous !
    Je n'arrive toujours pas à fermer toutes mes autres div qui commence par 'mondiv'.
    En effet, j'ai 4 div qui s'appelle: mondiv1 mondiv2 mondiv3 mondiv4
    Et je n'arrive pas à toutes les fermers avant dans ouvrir une nouvelle.

    Vous ne pouvez toujours pas m'expliquer, car le_chomeur explique très bien mais j'ai pas tous suivis et quand je test cela ne marche pas.

    Merci a tous de votre aptience avec moi car franchement je suis une bille niveau javascript.
    Enfin j'essaye de m'y mettre mais c'est pas évident au début.

    Thibaud

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    alors après avoir parcouru ton code j'éviteraiscertaine remarque , mais il pourrait être facilement simplifié mais la n'est pas le sujet

    la ligne qui bloque , c'est :
    while ( document.all[ nom + NumDiv ] )
    et autre getDocumentById(nom+numDiv) ...

    car tu tente de récupèrer un élément mais s'il n'éxiste pas plantage etc ...

    tu devrais utiliser une boucle for(var i = 0 ; i < 4 ; i++) en connaissant d'avance le nombre de div ... ou pour reprendre mon exemple , mettre une class afficher/masquer sur les divs que tu souhaites voir disparaitre...

    En l'état il faut que tu modifies ton script car il ne boucle pas...

    n'hésite pas si tu n'as pas compris

  7. #7
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Oki je vais faire comme tu a dit !
    je vais tous refaire et je te montre après alors.

    Tu me dira car je trouve mon code excuse moi du terme mais super Merdique et cela m'énerve fortement

    Et tu pouvais dire que c'était de la merde je t'en aurais pas voulu.

    Merci le_chomeur a bientôt

Discussions similaires

  1. Afficher & Cacher des div
    Par stanley dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 29/10/2008, 20h26
  2. montrer et cacher des div dynamiquement
    Par kanabzh29 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/09/2008, 15h49
  3. Afficher / Cacher des divs
    Par figatelliSTI dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/04/2008, 16h57
  4. Cacher des div, disparition de leur contenu.
    Par guitou0 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 25/03/2008, 11h53

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