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 :

Menu généré avec DOM dans une div dont le contenu lié apparait dans une autre div


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Menu généré avec DOM dans une div dont le contenu lié apparait dans une autre div
    J'ai deux division dans une division global. Chacune de ces divisions sera en float:left dans le CSS.

    Dans champsGenere, le menu sera généré par une boucle qui passe les entrées d'un tableau. Jusqu'ici, aucun problème!

    Sauf que lorsque je clique sur un cours, j'aimerais que les détails de ce cours apparaisse dans la seconde division (soit coursGenere). Lorsque je choisi un autre cours, les détails changent (ces détails sont aussi généré par ce tableau).

    J'arrive à le faire si les détails apparaissent sous le champ du cours plutôt que dans l'autre division.

    Peut-être que j'arrive pas à trouver le bon parentNode, nextSibling ou je sais pas trop. Peut-être que ça se fait pas?

    Est-ce que quelqu'un sait comment faire?

    Merci beaucoup!!!

    HTML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <div id="global">
     
        <div id="champsGenere">            
        	<p>Ateliers d'informatique</p>
        </div> 
     
        <div id="coursGenere">            
            <p>Titre du champ d'application</p>
        </div> 
     
    </div>
    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
    var derniereListeCours = null;
     
    function afficheChamps() 
    {
    	for(i=0; i<champApplications.length; i++)
    	{
    		var divNomChamp = document.createElement("div");
    		divNomChamp.appendChild(document.createTextNode(champApplications[i][0]));
    		divNomChamp.className = "divNomChamp";
    		document.getElementById("champsGenere").appendChild(divNomChamp);	
     
    		divNomChamp.onclick = basculeCours;	
     
    		for(j=0; j<champApplications[i][1].length; j++)
    		{	
    			var divGlobal = document.createElement("div");
    			divGlobal.className = "coursPlace";
    			document.getElementById("coursGenere").appendChild(divGlobal);			
     
    			// div à l'intérieur de divGlobal
    			var titreCours = document.createElement("div");
    			titreCours.appendChild(document.createTextNode(champApplications[i][1][j].titreCours))	;
    			titreCours.className = "courDetail";
    			divGlobal.appendChild(titreCours);		
    		}
    	}
    }
     
     
    function basculeCours() 
    {	
    	if(derniereListeCours!=null) {
    		derniereListeCours.style.display = "none";
    	}
     
    	var listeCours = this.nextSibling;
    		listeCours.style.display = (listeCours.style.display=="inline")?"none":"inline";
    		derniereListeCours = listeCours;
    }

    Merci!!!
    Isabelle

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    salutation bienheureuse

    bon, je n'ai fait qu'un parcours rapide de ton code. mais je vois déjà une chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function basculeCours() 
    {	
    	if(derniereListeCours!=null) {
    		derniereListeCours.style.display = "none";
    	}
     
    	var listeCours = this.nextSibling;
    		listeCours.style.display = (listeCours.style.display=="inline")?"none":"inline";
    		derniereListeCours = listeCours;
    }
    this ici ne désigne pas l'élément qui a généré l'événement mais la fonction basculeCours. ta fonction fonctionne comme une classe. si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function maFonction()
    {
      this.tata = "salut";
    }
    var toto = maFonction();
    alert(toto.tata); // affiche "salut"
    remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function basculeCours(e){ 
    var listeCours = e? e.target.nextSibling : event.srcElement.nextSibling;
    }

Discussions similaires

  1. Récuperer div dont l'id se termine par une certaine chaine
    Par Kimado dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/04/2008, 16h20
  2. Réponses: 2
    Dernier message: 05/03/2008, 16h12
  3. [MySQL] Problème pour afficher une image dont le chemin est stocké dans la bdd
    Par cel.Saint-Louis dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2007, 08h49
  4. Réponses: 6
    Dernier message: 09/07/2007, 15h39
  5. Réponses: 4
    Dernier message: 22/02/2007, 10h01

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