Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher / cacher des divs

J'aimerais n'avoir qu'un seul div affiché

Sujet résolu
    3 novembre 2010 à 0:32:35

    Bonsoir, j'ai téléchargé un petit script javascript permettant d'afficher/cacher des divs en cliquant sur un simple lien, le soucis est que je n'aimerais avoir qu'un seul div affiché à la fois. Donc en gros il faudrait que lorsqu'un on décide d'afficher un div (en cliquant sur le lien en question), tous les autres se ferment.

    Voici le code javascript en question :

    /*
    * 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';
    	}
    }
    


    et la méthode pour les afficher :

    <a href="javascript:DivStatus( 'block', '1' )">{L_MOST_POSTED_TOPICS}</a>
    
    <div name="block1" id="block1">
    				<div>
    					<table class="t" cellspacing="0">
    					<block name="t">
    						<tr>
    							<td><a href="{t.U_TOPIC}" class="forumname">{t.TOPIC_TITLE}</a><br /><span class="small">{t.TOPIC_AUTHOR} "<a href="{t.U_FORUM}" class="forumname">{t.FORUM_TITLE}</a>"</span></td>
    						</tr>
    					</block>
    					</table>
    				</div>
    				</div>
    


    Est ce que quelqu'un aurait une solution à me proposer ?

    Merci beaucoup :)
    • Partager sur Facebook
    • Partager sur Twitter
      3 novembre 2010 à 2:21:51

      Salut,

      perso piquer des code, je n'en vois pas l'intérêt si tu ne les comprend pas.

      la 1ere solution que j'ai a te proposé c'est de lire les tuto sur javascript.

      et la 2sd si comme moi ça avec javascript c'est de passer a jquery, et tu trouveras la solution.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        3 novembre 2010 à 8:51:28

        Bon pour mon premier poste ici je suis gentil mais à l'avenir cherche plutot à apprendre qu'à 'pomper' sur internet ;)
        var bool=true; //le boleen hors de la fonction
        
        function divStatus() //Menu deroulant
        {
          if (bool==true) // si le boleen vaut 'true'
          {
          document.getElementById('id').style.display ="block"; // le block devient visible
          bool=false; // le boleen vaut false
          }
          else // Si on a deja cliquer sur le lien le boleen vaut false donc else s'execute!
          {
          document.getElementById('id').style.display ="none"; // le block est invisible
          bool=true; //le boleen vaut 'true'
          }
        }
        

        tu n'aura plus qu'à mettre dans ton CSS display:none à ta div (ou dans le script) et à utiliser la fonction sur un span ou un lien.voila voila désolé pour les fautes ;)
        PS:à toi de l'ameliorer :)
        • Partager sur Facebook
        • Partager sur Twitter
          3 novembre 2010 à 12:22:22

          Heu merci de vos réponses mais je ne vois pas en quoi j'ai "pomper" en téléchargeant un script mis à libre disposition par son auteur sur internet ;)

          Merci Marsu pour le code je vais tester ça de ce pas :)

          Et après oui j'aurais bien appris le javascript mais je n'ai pas malheureusement pas le temps, surtout lorsque j'en ai besoin pour un simple petit élément comme celui ci =S

          EDIT : J'ai un petit soucis avec ton code, dès que je l'applique je n'ai plus rien qui s'affiche, et impossible de faire afficher quoi que ce soit =s

          J'ai pourtant appliqué ta fonction sur les liens :

          <a href="javascript:DivStatus()">{L_MOST_POSTED_TOPICS}</a>
          


          et défini les blocks donc :

          <div id="1" class="cachediv">
          				<div>
          					<table class="t" cellspacing="0">
          					<block name="t">
          						<tr>
          							<td><a href="{t.U_TOPIC}" class="forumname">{t.TOPIC_TITLE}</a><br /><span class="small">{t.TOPIC_AUTHOR} "<a href="{t.U_FORUM}" class="forumname">{t.FORUM_TITLE}</a>"</span></td>
          						</tr>
          					</block>
          					</table>
          				</div>
          


          sachant que la class "cachediv" contient le display="none" que tu m'as demandé d'insérer. Un coup de main ? Merci =)
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            3 novembre 2010 à 13:31:03

            je t 'ai donné le code le plus basique en fait pour que de toi même tu le rende valable pour tout id ..

            de plus mon code est fait pour fonctionner avec un Id et non une class ;)

            dans un élant de sympathie :
            var bool=true; //le boleen hors de la fonction
            
            function DivStatus(divId) {
            
            
            if (bool==true) // si le boleen vaut 'true'
            {
            document.getElementById(divId).style.display ="block"; // le block devient visible
            bool=false; // le boleen vaut false
            }
            else // Sinon
            {
            document.getElementById(divId).style.display ="none"; // le block est invisible
            bool=true; le boleen vaut 'true'
            }
            }
            

            Je pense (mais sa n'engage que moi) que le mieu c'est qu'à la place de ton lien tu mette une balise span comme ceci :
            <span onClick="DivStatus('cachediv')">ton texte de qui sert de lien </span>

            Ensuite autre conseil: quand tu declare des Id ou des variable avec plusieurs mots met des majuscules aux mots suivants.
            comme ceci :cacheDiv c'est beaucoups plus claire.:)
            et ajoute a ta div "cacher" un id ;)
            • Partager sur Facebook
            • Partager sur Twitter
              3 novembre 2010 à 18:08:37

              Merci beaucoup c'est parfait =)
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                3 novembre 2010 à 20:24:25

                de rien ;) mais malgré tout essaie d'apprendre les bases c'est pas long ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  5 novembre 2010 à 14:58:02

                  Citation : MaRSu91

                  de rien ;) mais malgré tout essaie d'apprendre les bases c'est pas long ;)



                  Je ne vais pas rentrer dans les détails de ma vie mais actuellement je n'ai vraiment pas le temps. Le code c'est pas pour mon usage personnel mais plutôt pour un projet qu'on essaye de remettre à neuf. Et au lieu de demander un coup de main aux autres membres du staff (qui sont débordés tout comme moi soit dit en passant) je suis venu demander ici, et directement on m'a traité de "copieur", ce que je trouve assez abusé au passage mais soit.

                  Je vous remercie de votre aide dans tous les cas n'allez pas croire le contraire, mais certains facteurs propres à chacun font qu'on ne peut pas faire tout ce qu'on aimerait faire, ce qui fait qu'on est obligé de demander un coup de main ;)

                  C'est pas comme si je vous avais demandé de réaliser mon site, juste un petit coup de main pour un affichage plus performant, c'est ça de l'entraide ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    5 novembre 2010 à 15:02:13

                    Je disais sa pour toi aussi ,avec les bases du JS tu aurai pu la réussir toi même facilement cette fonction. Bon courage ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 novembre 2010 à 15:17:56

                      Citation : MaRSu91

                      Je disais sa pour toi aussi ,avec les bases du JS tu aurai pu la réussir toi même facilement cette fonction. Bon courage ;)



                      C'est évident j'en suis conscient ^^
                      C'est d'ailleurs pour ça que j'attends la sortie du livre du zéro sur javascript :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 novembre 2010 à 21:32:11

                        au lieu de display block pour afficher et none pour cacher, j'utiliserai plutot none et "" ( vide quoi ) parceque si tu veut plus tard cacher des balises inline tu va les transformer en block automatiquement :x
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          5 novembre 2010 à 22:00:53

                          Citation : SquallX

                          C'est évident j'en suis conscient ^^
                          C'est d'ailleurs pour ça que j'attends la sortie du livre du zéro sur javascript :)


                          il y a un bon tuto JS assez complet sur le SdZ.enfin bref tu as l'aire d'avoir envie d'apprendre c'est déjà sa.

                          Citation : Almandin

                          au lieu de display block pour afficher et none pour cacher, j'utiliserai plutot none et "" ( vide quoi ) parceque si tu veut plus tard cacher des balises inline tu va les transformer en block automatiquement :x


                          il voulait une fonction pour des blocs donc mon code reste bon ,de plus tu peu aussi utiliser "inline"
                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 novembre 2010 à 13:32:40

                            c'était juste a titre informatif ;) s'il veut utiliser que des blocs pas de soucis, mais s'il veut changer plus tard, tu es sur que ça marchera peut importe la balise avec ma façon :)
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Afficher / cacher des divs

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown