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 :

aide pour alléger mon code simple mais long


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut aide pour alléger mon code simple mais long
    Bonjour à tous,

    J'ai un calendrier d'une quarantaine de jours, je veux qu'en cliquant sur un jour du calendrier apparaisse un texte unique pour chaque jour et changer la couleur du jour sélectionné.

    Pour faire cela j'ai donc mes jours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <a href="#" onclick="showHide1()" id="j_1">1</a>
    <a href="#" onclick="showHide2()" id="j_2">2</a>
    <a href="#" onclick="showHide3()" id="j_3">3</a>
    <a href="#" onclick="showHide4()" id="j_4">4</a>
    ...
    Donc en cliquant sur jour 1, ça déclenche showHide1(), ...

    Les textes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="1" style="display:none;"> texte du jour 1 </div> ...
    Ensuite j'ai le 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
     
    function showHide1() {
    	document.getElementById('1').style.display = ''; 
            document.getElementById('j_1').style.background = 'red';
     
            document.getElementById('2').style.display = 'none';
            document.getElementById('j_2').style.background = 'black';
     
            document.getElementById('3').style.display = 'none';
            document.getElementById('j_3').style.background = 'black';
     
            ...
    }
     
    function showHide2() {
    	document.getElementById('1').style.display = 'none';
            document.getElementById('j_1').style.background = 'black';
     
            document.getElementById('2').style.display = '';
            document.getElementById('j_2').style.background = 'red';
     
            document.getElementById('3').style.display = 'none';
            document.getElementById('j_3').style.background = 'black';
     
            ...
    }
     
    ...
    Je pense que vous commencez à comprendre le problème : la longueur du code final !

    En effet, en cliquant sur un jour, il ne faut pas seulement que ça "l'active" en rendant visible le texte et en changeant la couleur mais il faut aussi que ça "désactive" tous les autres jours en rendant invisible les textes et en mettant une couleur différente du jour sélectionné.

    Donc je vous ai dit que j'avais une quarantaine de jours alors visualisez la longueur du code !

    Il faut 40 fonctions showHide() et dans chacune de ses fonctions il faut 40 lignes pour désactiver tous les jours sauf un.

    Merci de m'aider si vous avez une solutions permettant de faire beaucoup moins de lignes.

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 656
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 656
    Points : 11 153
    Points
    11 153
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="1" style="display:none;"> texte du jour 1 </div>
    Déjà je te déconseille vivement de donner un nombre en tant que id d'un élément.

    Donc pour la suite, je vais appeler les div en question divj. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="divj_1" style="display:none;"> texte du jour 1 </div>

    Dans un premier temps tu peux réaliser une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var i;
    for (i=1; i<=31; i++)
    {
            document.getElementById("divj_"+i).style.display = "none";
            document.getElementById("j_"+i).style.background = "black";
    }
    ensuite tu peux transmettre le id de tes liens aux fonctions :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="#" onclick="showHide(this.id)" id="j_1">1</a>
    et ta fonction javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function showHide(leJour)
    {
    	document.getElementById("div" + leJour).style.display = ''; 
            document.getElementById(leJour).style.background = 'red';
    }

    Au final tu as une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function showHide(leJour)
    {
    	var i;
    	for (i=1; i<=31; i++)
    	{
    	        document.getElementById("divj_"+i).style.display = "none";
    	        document.getElementById("j_"+i).style.background = "black";
    	}
     
    	document.getElementById("div" + leJour).style.display = ''; 
            document.getElementById(leJour).style.background = 'red';
    }

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    grand merci ça marche très bien.

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

Discussions similaires

  1. Intégrer une variable pour alléger mon code ?
    Par castelcerf dans le forum jQuery
    Réponses: 3
    Dernier message: 06/10/2010, 13h52
  2. Réponses: 11
    Dernier message: 23/05/2007, 11h53
  3. [MASM] Aide pour débugguer mon code
    Par abd_ham_juve dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 20/01/2007, 00h59
  4. [VBA-E] Aide pour éxécuter mon code en cliquant sur un bouton dans excel.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 53
    Dernier message: 29/05/2006, 14h47
  5. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 07/11/2005, 00h30

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