|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : avril 2007 Messages : 41 ![]() |
Bonjour,
Voila je blogue sur un probleme tous simple qui et de changer la class d'un lien d'un menu générer en php via une base de données. pour tous ces lien, j'ai bien un identifiant unique afin de ne changer q'un seul lien. Or lorsque je suis dans un sous menu, j'appelle la fonction javascript, mais celle ci na pas l'air de fonctionner. Voila mon script: Code :
Code :
Je ne vois pas ou j'ai pu me trompez. Merci de bien vouloir m'eclairer. |
||||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
Salut!
Je crois que tu essayes de de changer la classe de ton lien actif non? Il y'a une propriété css pour ca. Je sais plus là quel .... Sinon pourquoi tu génère ton js via php? Notamment la fonction ChangeClass? Et manque du code aussi, car là , et au vue de tes explications, c'est chaud de t'aider ... bye |
|
|
00
|
|
|
#3 | |||
|
Membre Expert
![]() Eric GaridacciInscription : septembre 2005 Messages : 1 057 ![]() |
Salut,
Citation:
Code js :
__________________
N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ... |
|||
|
|
00
|
|
|
#4 | ||||||||||
|
Invité régulier
![]() Inscription : avril 2007 Messages : 41 ![]() |
Voici en faite mon code qui genere mon menu et sous menu:
code du menu qui creer un lien vers une page web ou un lien de survol: Ma table menu et composer des champs suivants: Code :
Code :
Code :
Code :
Code :
Or je voulait modifier la class de mes lien du menu suivant si je suis dans un sous menu ou nom. Je n'est pas mit la fonction test_dossier qui ne fait que modifier la variable file afin que l'opendir fonctione. Je tien a preciser que tout ce code fonctionne et que seul la fonction javascript ChangeClass ne fonctionne pas. |
||||||||||
|
|
00
|
|
|
#5 | |||
|
Membre éclairé
![]() Inscription : février 2009 Messages : 318 ![]() |
Tu devrais utiliser une librairie genre jquery.
Citation:
Code :
Sinon , y'a beaucoup de truc étonnant dans tons script. le fait que le contenue de tes pages ne soit pas en bd, le nombre de requête (une devrait suffir), l'utilisation de $_SERVER['PHP_SELF'] aussi, utilise des url relatives, la fonction js aussi, qui n'a rien de dynamique ect .... Tu es sans doute débutant ... je te conseil vivement, de prendre un cms pour ton site, et le bon bouquin qui va avec |
|||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
freeman43, essaye de prendre la peine de lire Important : Les règles incontournables d'utilisation de ce forum et de poster le code HTML généré, le code PHP étant généralement inutile ici !
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : avril 2007 Messages : 41 ![]() |
en faite mon css et deja creer.
en suite le fichier que j'ai mit a mon dernier post et un fichier que j' inclus dans mes autres page web, car comme tu le dit, mes pages web sont bien gérer via une base de données. si tu veux dans mon CSS, j'ai bien crée des class qui me permette justement de jouer sur mes styles. Apres c sur que pour le moment, l'optimisation des mes requete pour gérer mes menu n'est peut etre pas optimiser au mieux, mais pour le moment, cas marche. En ce qui concerne afficheId et cacheID, ce sont des fonctions qui me permette au survol des menu principaux, l'affichage des sous menu via la fonctions innerHTML, et celle-ci fonctionne tous a fait. l'optimisation de celle-ci, se fera plus tard. Donc le seul vrai souci, c'est que je n'arrive pas à appeler la fonctions afin de modifier la class du lien. voila en faite ce que tu me demandé: mon fichier css: Code :
|
||
|
|
00
|
|
|
#8 | |
|
Invité régulier
![]() Inscription : avril 2007 Messages : 41 ![]() |
Citation:
Je te prie de m'excuser. |
|
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Eric GaridacciInscription : septembre 2005 Messages : 1 057 ![]() |
J'avais zappé un truc...
Dans la fonction ChangeClasse, le paramètre passé à la méthode document.getElementById ne doit pas être entre apostrophes, sinon c'est l'élément ayant pour identifiant 'IDMenu' (ou null) qui est retourné. Code php :
__________________
N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ... |
||
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : avril 2007 Messages : 41 ![]() |
Apres plusieurs essaye, je n' arrive pas en faite a acceder a la fonctions qui me permet de modifier la class. Pourtant, pour acceder a la fonctions via php, il faut bien utiliser la syntaxe suivante:
Code :
<script> ChangeClass('.$IDClass.');</script>'; Merci de bien vouloir m aider. |
|
|
00
|
|
|
#11 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Citation:
Donc montre-nous le code HTML généré pour pouvoir voir quelle est la nature du problème.
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : avril 2007 Messages : 41 ![]() |
Voici le code generer par le script:
Code :
<script type="text/javascript"> function ChangeClass(IDMenu){ document.getElementById(IDMenu).className = 'link'; alert('IDMenu'); }; </script><div id="menu"><ul><li onmouseover="cacheId('News');cacheId('Equipes');cacheId('Ecolesdefoot');cacheId('Convocations');cacheId('Calendriers');cacheId('Photos');cacheId('Sponsors');cacheId('Historique');cacheId('NousContacter');afficheId('Acceuil');"<a id="Acceuil2" class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/index.php">Acceuil</a></li><li onmouseover="cacheId('Acceuil');cacheId('Equipes');cacheId('Ecolesdefoot');cacheId('Convocations');cacheId('Calendriers');cacheId('Photos');cacheId('Sponsors');cacheId('Historique');cacheId('NousContacter');afficheId('News');"<a id="News2" class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/News.php">News</a></li><li onmouseover="cacheId('Acceuil');cacheId('News');cacheId('Ecolesdefoot');cacheId('Convocations');cacheId('Calendriers');cacheId('Photos');cacheId('Sponsors');cacheId('Historique');cacheId('NousContacter');afficheId('Equipes');"<a id="Equipes2" class="">Equipes</a></li><li onmouseover="cacheId('Acceuil');cacheId('News');cacheId('Equipes');cacheId('Convocations');cacheId('Calendriers');cacheId('Photos');cacheId('Sponsors');cacheId('Historique');cacheId('NousContacter');afficheId('Ecolesdefoot');"<a id="Ecolesdefoot2" class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/EcolesdeFoot.php">Ecoles de foot</a></li><li onmouseover="cacheId('Acceuil');cacheId('News');cacheId('Equipes');cacheId('Ecolesdefoot');cacheId('Calendriers');cacheId('Photos');cacheId('Sponsors');cacheId('Historique');cacheId('NousContacter');afficheId('Convocations');"<a id="Convocations2" class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Convocations.php">Convocations</a></li><li onmouseover="cacheId('Acceuil');cacheId('News');cacheId('Equipes');cacheId('Ecolesdefoot');cacheId('Convocations');cacheId('Photos');cacheId('Sponsors');cacheId('Historique');cacheId('NousContacter');afficheId('Calendriers');"<a id="Calendriers2" class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Calendriers.php">Calendriers</a></li><li onmouseover="cacheId('Acceuil');cacheId('News');cacheId('Equipes');cacheId('Ecolesdefoot');cacheId('Convocations');cacheId('Calendriers');cacheId('Sponsors');cacheId('Historique');cacheId('NousContacter');afficheId('Photos');"<a id="Photos2" class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Photos.php">Photos</a></li><li onmouseover="cacheId('Acceuil');cacheId('News');cacheId('Equipes');cacheId('Ecolesdefoot');cacheId('Convocations');cacheId('Calendriers');cacheId('Photos');cacheId('Historique');cacheId('NousContacter');afficheId('Sponsors');"<a id="Sponsors2" class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Sponsors.php">Sponsors</a></li><li onmouseover="cacheId('Acceuil');cacheId('News');cacheId('Equipes');cacheId('Ecolesdefoot');cacheId('Convocations');cacheId('Calendriers');cacheId('Photos');cacheId('Sponsors');cacheId('NousContacter');afficheId('Historique');"<a id="Historique2" class="">Historique</a></li><li onmouseover="cacheId('Acceuil');cacheId('News');cacheId('Equipes');cacheId('Ecolesdefoot');cacheId('Convocations');cacheId('Calendriers');cacheId('Photos');cacheId('Sponsors');cacheId('Historique');afficheId('NousContacter');"<a id="NousContacter2" class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Contacter.php">Nous Contacter</a></li></ul></div><div id="ss_menu"><ul id="Ecolesdefoot" onmouseover="afficheId('Ecolesdefoot');" onmouseout="cacheId('Ecolesdefoot');"><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/U6-U7.php">Pré-Débutants(U6-U7)</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/U8-U9.php">Débutants (U8-U9)</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/U10.php">Poussins(U10)</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/U11.php">Poussins(U11)</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/U12-U13.php">Benjamins (U12-U13)</a></li></ul><ul id="Equipes" onmouseover="afficheId('Equipes');" onmouseout="cacheId('Equipes');"><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/Equipes.php">Promotions</a></li> <script> ChangeClass(Equipes2); </script><li><a class="link" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/2emeDiv.php">2eme Divisions</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/U15.php">U15</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2010_2011/U14.php">U14</a></li></ul><ul id="Historique" onmouseover="afficheId('Historique');" onmouseout="cacheId('Historique');"><li style="color:#FFFFFF;"><bg>Saison 2009 2010</bg></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2009_2010/2emeDiv.php">2emeDiv</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2009_2010/Promotion.php">Promotion</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2009_2010/U10-U11.php">U10-U11</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2009_2010/U12-U13.php">U12-U13</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2009_2010/U15.php">U15</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2009_2010/U7-U8.php">U7-U8</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Saison2009_2010/U9-U10.php">U9-U10</a></li></ul><ul id="Photos" onmouseover="afficheId('Photos');" onmouseout="cacheId('Photos');"><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Photos.php">Photos</a></li><li><a class="" href="http://mbp-franck-marrel.local/~franckmarrel/FCS1PO/FCS1POwebdesignV4/Videos.php">Vidéos</a></li></ul></div> </div> |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Eric GaridacciInscription : septembre 2005 Messages : 1 057 ![]() |
Ligne 17 du code du menu (post #4)
Il faut fermer la balise li. Code php :
echo 'afficheId(\''.$Var2.'\');">'; Ligne 67 du code du sous-menu (post #4) Ici c'est le paramètre d'appel à la fonction qui doit être placé entre apostrophes. Code php :
echo '<script> ChangeClass(\''.$IDClass.'\'); </script>';
__________________
N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ... |
|
|
00
|
|
|
#14 | ||||||||||
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 421 ![]() |
moi j'ai repéré ça :
Code php :
Code php :
Code html :
<script src="menu.js" type="text/javascript"></script>
ça n'a l'air de rien mais un js généré par php dans la page est re-compilé par le navigateur à chaque appel alors que celui qui est lié statiquement n'est chargé qu'une fois. mais en surtout ton code géné est: Code :
pour que ça fonctionne il faut peut être utiliser la variable passé en paramètre. Code :
voilà une raison de plus de NE JAMAIS générer le javascript en php. Je n'ai à ce jour JAMAIS, pas une fois depuis que js existe, trouvé UN SEUL cas où on ne peut pas utiliser un code js statique à la place d'un code généré. PAS UN SEUL CAS!!! Je dis donc simplement "Ne générez jamais de codes javascript" en écrivant les codes dans des fichiers js vous gagnerez en clarté, en maintenabilité, en évolutivité, et vous éviterez ce genre de bug. quant au code de la page html c'est aussi simple que Code php :
A+JYT |
||||||||||
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Inscription : avril 2007 Messages : 41 ![]() |
Salut,
Tous d abord, merci de votre aide. Sekaijn, j'ai mit ma fonction javascript en dehors de mon code php. Pourquoi, je doit mettre un evenement onclick car lorsque je fait ca la page va etre recharger et donc ca ne changera pas la classe de mon menu. Merci de m eclairer. |
|
|
00
|
|
|
#16 |
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 421 ![]() |
le on click est là pour illustrer qu'on peut se passer de mélanger js et php même sur des événements
A+JYT |
|
|
00
|
|
|
#17 |
|
Invité régulier
![]() Inscription : avril 2007 Messages : 41 ![]() |
D' accord.
Bon finalement pour detecter sur quel page j'etait, j'ai arretez cette methode et j' ai carrement faire le test non plus en php, mais en javascript ou l execution de la fonction se fait au chargement de la page en faisant un settimeout afin que le fonction s execute quand le code de la page et totalement generer. En tout cas merci de votre aide car ca bien aider. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com