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 :

[débutant]display de div en appuyant sur un bouton


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Par défaut [débutant]display de div en appuyant sur un bouton
    bonjour,

    j'ai fais une petite fonction qui me permet de rentre une div visible ou invisible grâce au clic sur un bouton.

    Alors si j'enlève la boucle de mon code, j'ai bien une div qui apparaît mais le problème c'est que si il y a plus d'un enregistrement cela ne va plus. Si je mets la boucle pour prendre en compte tous mes enregistrements cela ne fonctionne plus.

    code html de ma div

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <td colspan=5 class=BG5><input type=button value='reporting' onclick = "report('reporting')"></td>
          </tr>
          <tr>
          <td colspan=4>
          <div style=display:none id=reporting$tache_id>
     
          <textarea name=wrk_rem$i style='height:80px;width:100%'></textarea>
          Date : <input name=wrk_date$i id=wrk_date$i style='text-align:center;width:70px' value=$date> &nbsp;&nbsp;&nbsp; Temps : <input name=wrk_temps$i id=wrk_temps$i style='text-align:center;width:50px'><br>
          <input type="hidden" value="$r4[tache_id]">
          <input type=submit value='Valider'>
          </div>
    et voilà le code de ma fonction 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
     
    function report(reporting)
    {
    	var i;
     	var tabInput = document.getElementsByTagName("div");
     	var n = tabInput.length;
     	for (i=0; i<n; i++)
     	{
    		maDiv = document.getElementById(reporting + $tache_id);
    		if (maDiv.style.display=="none")
    		{
    			maDiv.style.display = "block";
    		}
    		else
    		{
    			maDiv.style.display = "none";
    		}
    	}
    }
    si vous voyez le problème. Merci d'avance.

  2. #2
    Membre Expert Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Par défaut
    tu t'es trompé

    dans le for de ta fonction, il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDiv = document.getElementById(reporting + i);

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Citation Envoyé par kifouillou Voir le message
    ...mais le problème c'est que si il y a plus d'un enregistrement cela ne va plus. Si je mets la boucle pour prendre en compte tous mes enregistrements cela ne fonctionne plus.

    Bonjour,

    Qu'est ce que tu entend par ça ne marche plus ?
    As-tu un quelconque message d'erreur dans la console javascript ?

    Sinon, j'aimerais bien que tu nous explique à quoi correspondent les variables avec le $ dans ton code et en particulier $tache_id. Je suppose que c'est du code PHP.

    Enfin, tu nous dis pas non plus quel doit être le résultat de ta fonction exactement. Est-ce que tu veux que tous tes bloc DIV concernant 'reporting' apparaissent et disparaissent en même temps (c'est ce que tu semble avoir fais) ou bien que chacun d'entre eux réagissent à son propre bouton auquel cas il te faut envoyer en paramètre à ta fonction le id de ce DIV et ne pas faire une boucle sur tout les autre DIV.

    Bon je crois que je t'es posé trop de questions alors je vais attendre que tu nous éclaire un peu plus sur ton code.

  4. #4
    Membre éclairé Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Par défaut edit
    Bonjour,

    effectivement je n'ai pas beaucoup expliqué ce que je veux faire.

    En fait le résultat de ma page c'est l'affichage d'un projet et des différentes taches liés au projet. Ce qui m'intéresse c'est les taches. Pour chaque tache j'ai un bouton reporting qui me fait apparaitre un div caché correspondant à l'id de la tache. Mais que je clique sur n'importe lequel des boutons c'est toujours le dernier id qui est pris en compte, donc par exemple si je clique sur le bouton reporting de ma première tache et que j'ai trois taches d'affichées,c'est en dessous de la troisième tache que le formulaire apparaît.

    Sinon lorsque je dis que cela ne marche plus, je n'ai pas d'erreur javascript mais la div n'apparaît même plus. Voilà, j'espère vous avoir un peu plus éclairé.

    edit : Barsy quand je modifie ce que tu m'as dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maDiv = document.getElementById(reporting + i);
    firebug me trouve une erreur quand je clique sur mon bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maDiv has no properties

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Essaye avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <td colspan=5 class=BG5><input type=button value='reporting' onclick = "report('reporting$tache_id')"></td>
          </tr>
          <tr>
          <td colspan=4>
          <div style=display:none id=reporting$tache_id>
          
          <textarea name=wrk_rem$i style='height:80px;width:100%'></textarea>
          Date : <input name=wrk_date$i id=wrk_date$i style='text-align:center;width:70px' value=$date> &nbsp;&nbsp;&nbsp; Temps : <input name=wrk_temps$i id=wrk_temps$i style='text-align:center;width:50px'><br>
          <input type="hidden" value="$r4[tache_id]">
          <input type=submit value='Valider'>
          </div>
    Le code de la fonction 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
    function report(id_div)	// La fonction reçois l'identité du DIV à traiter en paramètre
    {
    	if(maDiv = document.getElementById(id_div)) {	// On vérifie l'existence du DIV
    		if (maDiv.style.display=="none")	// Si le DIV est caché on le rend visible
    		{
    			maDiv.style.display = "block";
    		}
    		else						// Sinon on le masque
    		{
    			maDiv.style.display = "none";
    		}
    	}
    }

  6. #6
    Membre éclairé Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Par défaut
    Parfait. Exactement ce que je voulais.

    J'aurais du le voir. Mais j'étais certains que l'erreur venait de mon js donc j'ai pas cherché ailleurs. Non mais alors desfois.

    Un très grand merci à toi en tout cas.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    De rien

    C'est à moi que ça fait plaisir de savoir que je peut aider quelqu'un

    A+

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

Discussions similaires

  1. Ajouter autant d'éléments demandés lorsque qu'on appuye sur un bouton
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/02/2008, 16h19
  2. Contrôler l appuye sur le bouton page precedante
    Par leo13 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 17/07/2007, 08h06
  3. [débutant] afficher une JFrame en cliquant sur un bouton
    Par 7rouz dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 07/03/2007, 11h22
  4. afficher le contenu d'un div au clic sur un bouton
    Par mussara dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 10/07/2006, 17h37
  5. Comment Appuyer sur le bouton d'une page web...?
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/01/2005, 14h07

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