[JavaScript] grand débutant...

Résolu/Fermé
haltopub Messages postés 109 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 23 décembre 2016 - 14 oct. 2007 à 16:19
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 15 oct. 2007 à 23:22
Bonjour,

je viens de tenter de créer un fichier javascript pour la 1ère fois et ... ça ne marche pas !
Pas très étonnant, mais j'ai beau fureter sur le net je trouve plein d'infos sur les js et rien qui m'aide !
Alors voilà l'histoire : je dois gérer le site web de mon collège, qui contient un menu déroulant.
Pb : le menu est inclus dans chaque page et si je veux le modifier il faut que je modifie les 60 et quelques pages une par une, c'est un peu pénible (le serveur qui nous héberge ne supporte pas le PHP, je précise car je sais que ce serait plus simple, mais...)

Une amie m'a donc suggéré d'utiliser un fichier js constitué de document.write('ligne de menu');

Pour le 1er menu ça donne ça :

document.write('<h1 id="header"><a href="../plansite.htm" title="Plan du site"></a></h1>');
document.write('<div id="menu">');
document.write('<dl>');
document.write(' <dt onmouseover="javascript:montre('smenu1');">Présentation</dt>');
document.write(' <dd></dd>');
document.write(' <dd id="smenu1" onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre('');">');
document.write(' <ul>');
document.write(' <li><a href="../Presentation/mot.htm">Le mot de la principale</a></li>');
document.write(' <li><a href="../Presentation/historique.htm">Historique</a></li>');
document.write(' <li><a href="../Presentation/plans.htm">Plans</a></li>');
document.write(' <li><a href="../Presentation/contacts.htm">Contacts</a></li>');
document.write(' <li><a href="../Presentation/personnels.htm">Personnels</a></li>');
document.write(' <li><a href="../Presentation/structure.htm">Structure</a></li>');
document.write(' <li><a href="../Presentation/horaires.htm">Horaires</a></li>');
document.write(' <li><a href="../Presentation/actualites.htm">Actualités / Réunions</a></li>');
document.write(' </ul>');
document.write(' </dd>');
document.write('</dl>');

et dans la page html, à l'emplacement où se trouvait le menu, j'ai écrit

<script language="JavaScript" src="menu.js"></script>

Où me suis-je plantée ?

Je pense que c'est dans la page html, mais...

Merci de votre aide !

16 réponses

nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
14 oct. 2007 à 17:09
déja tu utilise document.write('...');
donc l'intérieur de la parenthese commence par ' et se termine par '
or a cette ligne : document.write(' <dt onmouseover="javascript:montre('smenu1');">Présentation</dt>');
il y a 2 guillemet simple a l'intérieur
si tu veux que ca bug pas il fau mettre \' a la place de '


voila la correction :

document.write('<h1 id="header"><a href="../plansite.htm" title="Plan du site"></a></h1>');
document.write('<div id="menu">');
document.write('<dl>');
document.write(' <dt onmouseover="javascript:montre(\'smenu1\');">Présentation</dt>');
document.write(' <dd></dd>');
document.write(' <dd id="smenu1" onmouseover="javascript:montre(\'smenu1\');" onmouseout="javascript:montre(\'\');">');
document.write(' <ul>');
document.write(' <li><a href="../Presentation/mot.htm">Le mot de la principale</a></li>');
document.write(' <li><a href="../Presentation/historique.htm">Historique</a></li>');
document.write(' <li><a href="../Presentation/plans.htm">Plans</a></li>');
document.write(' <li><a href="../Presentation/contacts.htm">Contacts</a></li>');
document.write(' <li><a href="../Presentation/personnels.htm">Personnels</a></li>');
document.write(' <li><a href="../Presentation/structure.htm">Structure</a></li>');
document.write(' <li><a href="../Presentation/horaires.htm">Horaires</a></li>');
document.write(' <li><a href="../Presentation/actualites.htm">Actualités / Réunions</a></li>');
document.write(' </ul>');
document.write(' </dd>');
document.write('</dl>');
0
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 775
14 oct. 2007 à 17:10
Bonjour,

Il faut que tu échappes les ' ' qui sont à l'intérieur d'autres ' ' par une \ :
document.write(' <dt onmouseover="javascript:montre(\'smenu1\');">Présentation</dt>'); 
document.write(' <dd></dd>'); 
document.write(' <dd id="smenu1" onmouseover="javascript:montre(\'smenu1\');" 
  onmouseout="javascript:montre(\'\');">');

--
0
haltopub Messages postés 109 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 23 décembre 2016 12
14 oct. 2007 à 21:55
Merci à tous les 2 de vous être penchés sur mon problème

j'ai suivi vos conseils... mais le menu n'apparaît toujours pas !

voilà ce que ça donne

document.write('<h1 id="header"><a href="../plansite.htm" title="Plan du site"></a></h1>');
document.write('<div id="menu">');
document.write('<dl>');
document.write(' <dt onmouseover="javascript:montre(\'smenu1\');">Présentation</dt>');
document.write(' <dd></dd>');
document.write(' <dd id="smenu1" onmouseover="javascript:montre(\'smenu1\');" onmouseout="javascript:montre(\'\');">');
document.write(' <ul>');
document.write(' <li><a href="../Presentation/mot.htm">Le mot de la principale</a></li>');
document.write(' <li><a href="../Presentation/historique.htm">Historique</a></li>');
document.write(' <li><a href="../Presentation/plans.htm">Plans</a></li>');
document.write(' <li><a href="../Presentation/contacts.htm">Contacts</a></li>');
document.write(' <li><a href="../Presentation/personnels.htm">Personnels</a></li>');
document.write(' <li><a href="../Presentation/structure.htm">Structure</a></li>');
document.write(' <li><a href="../Presentation/horaires.htm">Horaires</a></li>');
document.write(' <li><a href="../Presentation/actualites.htm">Actualités / Réunions</a></li>');
document.write(' </ul>');
document.write(' </dd>');
document.write('</dl>');

mais ceci dit il ne doit pas y avoir que ça, sinon j'aurais au moins l'affichage du "header" commandé par la première ligne du script
Je persiste à penser qu'il y a un truc basique que j'ai oublié

La ligne dans le code html suffit-elle à commander l'exécution du script ?

Merci encore de votre aide
0
Bonjour,
chez moi, ça fonctionne parfaitement, le code est bon.
Voici le code de la page HTML que j'ai utilisé :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
</head>

<body>
<script language="JavaScript" src="menu.js"></script>
</body>
</html>

Votre script se nomme bien 'menu.js' et se trouve bien dans le même dossier que votre page HTML ?
Tenez-nous au courant,
cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 775
15 oct. 2007 à 00:48
Javascript n'est pas désactivé dans ton navigateur, n'est-ce pas ?

Est-ce que le menu s'affiche ici ?
Voici le code de cette page :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Un titre</title>
    <meta http-equiv="Content-type" content="text/html; charset=iso-8859-15">
    <script type="text/javascript" src="menu.js"></script>
</head>
<body>
</body>
</html>

Peut-être te faudrait-il nous en montrer plus ?

--
0
haltopub Messages postés 109 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 23 décembre 2016 12
15 oct. 2007 à 09:01
Je ne comprend pas tout, mais là je suis au boulot alors je n'ai pas mes fichiers sous la main.
Je vois ça ce soir.
Le texte
<script type="text/javascript" src="menu.js"></script>
se trouve dans le "body" dans un section "div conteneur"
est-ce que ça change qqch ?
Peut-il y avoir une interférence avec la feuille de style css qui gère la forme du menu ?
Je retravaille le sujet et à ce soir.
Merci !
0
haltopub Messages postés 109 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 23 décembre 2016 12
15 oct. 2007 à 19:15
Bonsoir !

alors je viens de réessayer, et surtout de transférer les fichier sur le serveur qui nous héberge au cas où ça marcherait en ligne et pas en local... échec sur toute la ligne

Du coup je vous donne les adresses (merci de ne pas commenter ce site qui est dans un état pitoyable ;-)

La page de base, sans passer par le javascript pour le menu :
http://pharouest.ac-rennes.fr/e290330B/Services/viescolaire.htm

La page modifiée
http://pharouest.ac-rennes.fr/e290330B/Services/viescolaire2.htm

Le script menu.js complet (qui se trouve bien dans le même répertoire que ma page)
http://pharouest.ac-rennes.fr/e290330B/Services/menu.js

Je pédale dans la semoule...
Les seules différences que je vois avec la page de Gihef, ce sont les espaces dans les document.write (je ne pense pas que ça soit là, mais je vais quand même essayer des les supprimer) et le recours à la feuille de style qui ferait interférence (et là je n'ai pas le recul nécessaire pour en juger)

Merci à tous les deux !
0
haltopub Messages postés 109 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 23 décembre 2016 12
15 oct. 2007 à 20:59
Suite...

pour vérifier mes 2 hypothèses, j'ai supprimé les blancs, pas mieux...

puis j'ai supprimé la ligne qui appelait la feuille de style
résultat : plus de mise en forme, mais toujours rien qui ressemble à un menu...
http://pharouest.ac-rennes.fr/e290330B/Services/viescolaire3.htm

De nouvelles idées ?
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 oct. 2007 à 21:24
salut,

garde ta version 3, vire les JS qui sont dans le '<head>' ils empêchent la validation du doc. on verra si le JS du menu fonctionne tout seul.
0
haltopub Messages postés 109 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 23 décembre 2016 12
15 oct. 2007 à 21:46
c'est fait, ça ne change rien...
une autre idée ?
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 oct. 2007 à 22:06
au moins on part sur une base sure.
et si tu mettais tout dans une fonction, fonction que tu appelles au 'onload()'
avant pour tester fais juste un
<body onload="document.write('Hello world !')">

si ça passe tu peux essayer de le mettre dans une fonction.
0
haltopub Messages postés 109 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 23 décembre 2016 12
15 oct. 2007 à 22:26
EUH...
j'ai essayé, j'obtiens une page blanche avec Hello world !" et c'est tout ... c'est normal ?
Je rappelle que mon post précise "grand débutant" alors la création de fonctions, je ne maîtrise pas... j'ai des bases de programmation, mais pas en js.
Peux-tu me guider un peu plus ?
Merci Dalida !
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 oct. 2007 à 22:48
JE L'AI !!!

bon on laisse tomber la fonction, tu as juste oublié d'échapper deux apostrophes dans les textes des menus. il y en a un pour le CPE, l'autre je ne sais plus ! (O_ô)'

te voila la version qui tourne.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 oct. 2007 à 23:03
et qu'est-ce que tu utilises pour coder ?
si tu as un bon éditeur de code il te trouvera ce genre d'erreur directement !

regarde ce que donne ton code sous NotePad++, en couleur c'est plus facile !
0
haltopub Messages postés 109 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 23 décembre 2016 12
15 oct. 2007 à 23:13
YEEEEES !
ça marche au poil !
merci Dalida !
j'ai un peu honte d'avoir laissé passer ça hier, alors merci d'avoir passé du temps sur mon pb.

Et pour répondre à ta question je n'ai pas d'éditeur de code, j'utilise le bloc-notes... et y'a pas de couleurs !

Merci encore et à une prochaine, je crois que je ne suis pas au bout de mes peines...
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 oct. 2007 à 23:22
merci d'avoir passé du temps sur mon pb
juste le temps de faire un copier/coller avec NotePad++ !!

je n'ai pas d'éditeur de code, j'utilise le bloc-notes...
tu sais ce qu'il te reste à faire…
-;o)

bon courage pour la suite !
0