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 :

liens menu dynamique javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 43
    Points
    43
    Par défaut liens menu dynamique javascript
    Hello,
    J'ai reçu un javascript que je dois intégrer dans mon site... mais il est boiteux...
    1. On ne peut pas mettre de liens sur les menu de niveau 1... alors que j'aimerai bien que quand on clique sur ce genre de menu, non seulement il montre les sous-menu mais aussi la page de présentation de ce menu...
    Ensuite, et c'est un peu lié, il ne retient pas la page et donc "l'état d'ouverture" dans lequel il était lorsqu'on clique sur un lien...
    En effet, comme toute la page se recharge, le menu se referme...
    Quelqu'un pourrait-il m'aider pour un de ces deux points ou les deux... m'indiquer par exemple le genre de fonction que je dois ajouter?
    Merci d'avance

    Greg

    Au oui... le code :

    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
    81
    82
    83
    84
    85
     
     
    if(!window.Node){
    	var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
    }
    function checkNode(node, filter){
    	return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
    }
    function getChildren(node, filter){
    	var result = new Array();
    	var children = node.childNodes;
    	for(var i = 0; i < children.length; i++){
    		if(checkNode(children[i], filter)) result[result.length] = children[i];
    	}
    	return result;
    }
    function getChildrenByElement(node){
    	return getChildren(node, "ELEMENT_NODE");
    }
    function getFirstChild(node, filter){
    	var child;
    	var children = node.childNodes;
    	for(var i = 0; i < children.length; i++){
    		child = children[i];
    		if(checkNode(child, filter)) return child;
    	}
    	return null;
    }
    function getFirstChildByText(node){
    	return getFirstChild(node, "TEXT_NODE");
    }
    function getNextSibling(node, filter){
    	for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling){
    		if(checkNode(sibling, filter)) return sibling;
    	}
    	return null;
    }
    function getNextSiblingByElement(node){
    	return getNextSibling(node, "ELEMENT_NODE");
    }
     
    var activeMenu = null;
     
    function showMenu(){
    	if(activeMenu){
    		activeMenu.className = "";
    		getNextSiblingByElement(activeMenu).style.display = "none";
    	}
    	if(this == activeMenu){
    		activeMenu = null;
    	}else{
    		this.className = "active";
    		getNextSiblingByElement(this).style.display = "block";
    		activeMenu = this;
    	}
    	return false;
    }
    function initMenu(){
    	var menus, menu, text, a, i;
    	menus = getChildrenByElement(document.getElementById("menu"));
    	for(i = 0; i < menus.length; i++){
    		menu = menus[i];
    		text = getFirstChildByText(menu);
    		a = document.createElement("a");
    		menu.replaceChild(a, text);
    		a.appendChild(text);
    		a.href = "#";
    		a.onfocus = function(){this.blur()};
    	}
    }
    if(document.createElement) window.onload = initMenu;
    function MenuDisplay()
    {
    	document.write('<ul id="menu">');
    		document.write('<li class="puce_noeud">Présentation');
    		  document.write('<ol>');
    		    document.write('<li class="puce_sous_cat"><a href=index.php?page=objectifs#>Missions et Objectifs</a></li>');
    		    document.write('<li class="puce_sous_cat"><a href=index.php?page=accueil#>accueil</a></li>');
    		  document.write('</ol>');
    		  document.write('<div class="separateur"></div>');
    		document.write('</li>');
     
     
    	document.write('</ul>');
    }

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    pour maintenir l'etat de ton menu d'une page a une autre, je ne vois que la solution de passer l'etat via l'url (méthode GET) pour aprèsle traiter avec un OnLoad

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Pour l'autre point, tout devrait se jouer dans ta fonction init. En effet tu as une boucle qui parcours les fils des menus pour rajouter un lien

    Fais une même boucle pour les menus eux-même avec une opération avoisinante, sauf que la le lien ne sera pas # mais le nom d eta page j'imagine

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Arnard
    Pour l'autre point, tout devrait se jouer dans ta fonction init. En effet tu as une boucle qui parcours les fils des menus pour rajouter un lien

    Fais une même boucle pour les menus eux-même avec une opération avoisinante, sauf que la le lien ne sera pas # mais le nom d eta page j'imagine

    merci, je vais me pencher sur tes propositions de solution...
    Etant un newbie, ça risque de prendre un pti temps

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Arnard
    pour maintenir l'etat de ton menu d'une page a une autre, je ne vois que la solution de passer l'etat via l'url (méthode GET) pour aprèsle traiter avec un OnLoad

    J'arrive pas trop à comprendre cela...
    En fait mon site sera en php avec une structure classique : en-tête, menu gauche, contenu, pied de page.
    Et j'insère le javascript dans le menu gauche...

    tu pourrias expliquer par un exemple?

    Merci

    Pour l'autre, je crois que ça va aller

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    passer le parametre dans l'url, via GET si tu preferes :
    index.php?menu=1

    puis recuperer la valeur de menu via javascript, il me semble que c'est faisable

    Enfin tu affiches le menu dont tu as récupéré l'identifiant

Discussions similaires

  1. menu dynamique javascript
    Par jadorelescss38 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/06/2007, 08h34
  2. menu dynamique javascript
    Par nerovia dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/04/2007, 18h31
  3. Comment intégrer des onglets, sur un menu dynamique Javascript
    Par kervano dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 04/04/2007, 13h14
  4. Menu dynamique javascript avec frame
    Par cosycorner dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/02/2007, 14h53

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