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 :

appel de fonction js pour changer la couleur


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Par défaut appel de fonction js pour changer la couleur
    Bonjour,

    Je suis débutante en javascript.
    Je souhaite que, lorsque je suis sur une page, le bouton du menu correspondant change de couleur.
    Je ne suis pas sûre d'être très claire...

    J'ai trouvé quelques tutos (le premier ne le fait pas en js):
    http://www.maratz.com/blog/archives/...x-active-link/
    http://www.fastclemmy.com/index.php?..._vous-etes-ici

    J'ai bien compris (je crois!) la fonction javascript, seulement, je ne sais pas comment l'appeler dans ma liste.

    ma liste actuelle :
    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
    <script type="text/javascript">
    	function colorOver(id) {
    		var elmt = document.getElementById(id);
    		elmt.style.background='#e4fe9a'; 
    	}
    </script>
    <script type="text/javascript">
    	function colorOut(id) {
    		var elmt = document.getElementById(id);
    		elmt.style.background='#fffacf'; 
    	}
    </script>
    <div id=menu_haut>
    	<ul>
    		<li onMouseOver="javascript:colorOver('li1');" onMouseOut="javascript:colorOut('li1');" id="li1" ><a href="<?php echo tep_href_link(FILENAME_DEFAULT); ?>">Accueil</a></li>
    		<li onMouseOver="javascript:colorOver('li2');" onMouseOut="javascript:colorOut('li2');" id="li2" ><a href="<?php echo tep_href_link(FILENAME_BONDECOMMANDE); ?>">Professionnel</a></li>
    		<li onMouseOver="javascript:colorOver('li3');" onMouseOut="javascript:colorOut('li3');" id="li3" ><a href="<?php echo tep_href_link(FILENAME_INFO); ?>">Informations</a></li>
    		<li onMouseOver="javascript:colorOver('li4');" onMouseOut="javascript:colorOut('li4');" id="li4" ><a href="<?php echo tep_href_link(FILENAME_RECETTE); ?>">Recettes</a></li>
    		<li onMouseOver="javascript:colorOver('li5');" onMouseOut="javascript:colorOut('li5');" id="li5" ><a href="<?php echo tep_href_link(FILENAME_CONCOURS); ?>">Concours</a></li>
    		<li onMouseOver="javascript:colorOver('li6');" onMouseOut="javascript:colorOut('li6');" id="li6" ><a href="<?php echo tep_href_link(FILENAME_CONTACT_US); ?>">Contact</a></li>
    	</ul>
    </div>
    Pouvez-vous m'aider/expliquer, ou me donner une autre solution?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    déja mets toutes les fonctions dans une seul et même balise script ...

    ensuite:
    evite aussi de passer id en parm ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function colorOut(ObjId) {
    		var elmt = document.getElementById(ObjId);
    		elmt.style.backgroundCOlor='#fffacf';
    ensuite les évènements sur les objets ne s'attendent pas a recevoir une recette de crèpes suzette mais bien du js donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li onmouseover="colorOver('li5');" onmouseout="colorOut('li5');" id="li5" ><a href="<?php echo tep_href_link(FILENAME_CONCOURS); ?>">Concours</a></li>
    et les evenements en minuscule
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Par défaut
    Ouch... je ne pensais pas qu'en si peu de code il y aurait autant à revoir!

    Comment je fais si je dois éviter de passer l'id en paramètre?

    Merci SpaceFrog, je change de suite.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    non je disais juste évite d'employer des noms de variables qui peuvent porter à confusion, js utilisant déja le nom id ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Par défaut
    ah ok!
    merci!

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    moi j'aurais passé directement l'objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function colorOut(Obj) {
    		Obj.style.backgroundCOlor='#fffacf'; 
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li onmouseover="colorOver(this);" onmouseout="colorOut(this);" id="li5" ><a href="<?php echo tep_href_link(FILENAME_CONCOURS); ?>">Concours</a></li>

    et hop hop hop plus besoins d'id ;-)

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Par défaut
    Merci le chomeur, je ne savais pas qu'on pouvait faire ça.

    romainVALERI, je n'avais pas vu ton message.
    Je vais surement poser une question très (très) bête, mais :
    comment je fais pour identifier le menu à colorer?
    J'ai bien compris pour isoler la chaine de caractère dans l'adresse de la page, mais comment dire qu'elle correspond à un bouton du menu bien précis?

  8. #8
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Ne sachant pas exactement (heu... même pas du tout en fait ) ce que ton PHP est censé générer comme href pour tes liens, difficile de dire de manière précise, mais le principe est le suivant : il faut une certaine corrélation (décidée par toi) entre les id de tes éléments li et les href des liens qu'ils contiennent :

    >>> soit tu écris les id en php comme tu fais pour les href, en conservant une correspondance entre les deux,

    >>> soit tu modifie le morceau de php qui écrit les href en y incluant le numéro du menu correspondant

    D'une manière ou d'une autre, ta fonction sera facile à écrire une fois que les id et href auront un point de correspondance, sinon il faudrait passer par un switch...case assez lourd à écrire, maintenir, et exécuter...

    Je détaillerai au besoin si ce n'est pas clair mais voilà le principe général que je te propose... ^^

  9. #9
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    La fonctionnalité que tu souhaites peut être implémentée de la manière suivante :

    >>> tu crées une fonction (par exemple) coloreMenuActif, que tu appelles à chaque chargement de page (onload du body, typiquement)

    >>> cette fonction doit récupérer la valeur de window.location qui contient l'adresse de la page en cours (affichée notamment dans la barre d'adresse du navigateur), puis chercher dans la chaine de caractères obtenue la partie qui te permet (en fonction du nommage que tu as choisi) d'identifier quel menu colorer.

    >>> il ne reste alors qu'a affecter le style.background que tu veux... ^^
    (attention cependant à l'interaction entre ce mécanisme et celui du survol : sinon après un survol de ton menu, l'élément "courant", coloré par la fonction dont je te parle, reprendra la même couleur "normale" que les autres... mais quand tu en seras là, si tu galères, reviens nous voir on aura plein de solutions ... ^^)

    Yapuka !

Discussions similaires

  1. Probleme pour changer la couleur de mon widget.
    Par Flow_75 dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 18/09/2009, 21h01
  2. Réponses: 2
    Dernier message: 09/09/2009, 14h08
  3. appel de fonction créée pour les jours fériés?
    Par novice06 dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/03/2009, 10h11
  4. Réponses: 3
    Dernier message: 01/06/2006, 09h49
  5. Aide pour changer de couleur sur les primitifs GLUT
    Par romainhoarau2764 dans le forum GLUT
    Réponses: 3
    Dernier message: 19/03/2005, 13h30

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