|JS| souci d'affichage de sous-menu

|JS| souci d'affichage de sous-menu - HTML/CSS - Programmation

Marsh Posté le 01-12-2004 à 00:16:54    

salut les filles,
 
j'ai un JS qui ne passe pas sous FireFox, je ne parviens pas à savoir pourquoi. Je ne maîtrise pas trop en JS. Voilà le coupable, quelqu'un a une idée de l'erreur que j'ai commis ?

Code :
  1. <script type=text/javascript language="JavaScript">
  2.           var menu = new Array();
  3.           var ssmenuNom = new Array();
  4.           menu[0] = 'Afrique du sud';
  5.           ssmenuNom[0] = new Array();
  6.           ssmenuNom[0][0] = '<a href="detail.php?dest=0">Hôtel PRESIDENT</a>';
  7.           ssmenuNom[0][1] = '<a href="detail.php?dest=1">ZIMBALI LODGE</a>';
  8.           ssmenuNom[0][2] = '<a href="detail.php?dest=2">Hôtel CASCADES</a>';
  9.           ssmenuNom[0][3] = '<a href="detail.php?dest=3">Hôtel LE PALACE</a>';
  10.           ssmenuNom[0][4] = '<a href="detail.php?dest=106">test</a> ';
  11.           ssmenuNom[0][5] = '<a href="detail.php?dest=98">SUN CITY</a> ';
  12.           ssmenuNom[0][6] = '<a href="detail.php?dest=99">DURBAN</a> ';
  13.           menu[1] = 'Brésil';
  14.           ssmenuNom[1] = new Array();
  15.           ssmenuNom[1][0] = '<a href="detail.php?dest=100">RIO</a> ';
  16.           ssmenuNom[1][1] = '<a href="detail.php?dest=101">PORTO SEGURO</a> ';
  17.           ssmenuNom[1][2] = '<a href="detail.php?dest=102">COSTA DO SAUIPE</a>';
  18. </script>

merci  :)


Message édité par effisk le 01-12-2004 à 00:20:22
Reply

Marsh Posté le 01-12-2004 à 00:16:54   

Reply

Marsh Posté le 01-12-2004 à 10:23:21    

eupe du matin, chagrin
[:dofor]


---------------
London Box Office: Comédie Musicale Londres
Reply

Marsh Posté le 01-12-2004 à 14:45:24    

eupe du midi, souci
[:islord]

Reply

Marsh Posté le 01-12-2004 à 14:58:28    

T'as regardé la console JS  ( Tools -> javascript console ) pour voir les erreurs qu'il te fait ?
 
( généralement, fait un clear , puis reload le site, sinon elle sera pleine de vieilles erreurs )
 
[edit]
 
Si y'a que ca dans ton script, il risque pas de faire grand chose, apparement il déclare un tableau, le rempli, et ... rien, il en fait rien visiblement [:spamafote]
 
y'avait pas une autre partie avec ?


Message édité par 0x90 le 01-12-2004 à 14:59:37

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 01-12-2004 à 15:03:54    

ouais j'ai zappé un truc, sorry. J'ajoute...
 
Donc voilà, je fais appel à ce script :
 
Si vous voulez voir la gueule de la page, voilà : http://teetravel.com/destinations.php
 
hurlez pas sur la css avec NS, FF et cie, je bosse dessus


Message édité par effisk le 01-12-2004 à 15:06:50
Reply

Marsh Posté le 01-12-2004 à 15:05:10    

Code :
  1. var ie=document.all;
  2. var ns6=document.getElementById&&!document.all;
  3. var ancien_num_menu=-1;
  4. function ouvre_menu(num, nbMenus)
  5. {
  6.         if (ancien_num_menu==num)
  7.         {
  8.                 //var ie=document.all;
  9.                 //var ns6=document.getElementById&&!document.all;
  10.                 objet.style.display = '';
  11.         }
  12.           else
  13.         {
  14.                 for ( var i=0; i<nbMenus; i++)
  15.                 {
  16.                         if (ie)
  17.                         {
  18.                                 objet = document.all['ssmenu' + i];
  19.                         }
  20.                         else if (ns6)
  21.                         {
  22.                                 objet = document.getElementById('ssmenu' + i);
  23.                         }
  24.                         if (objet.style.display == '')
  25.                         {
  26.                                 objet.style.display = 'none';
  27.                         }
  28.                 }
  29.                 if (ie)
  30.                 {
  31.                         objet = document.all['ssmenu' + num];
  32.                 }
  33.                 else if (ns6)
  34.                 {
  35.                         objet = document.getElementById('ssmenu' + num);
  36.                 }
  37.                 if (objet.style.display == 'none')
  38.                 {
  39.                         objet.style.display = '';
  40.                 }
  41.                 ancien_num_menu=num;
  42.         }
  43. }
  44. function genere_menu(menus, ssmenusNom, nbMenus)
  45. {
  46.         /*
  47.         * Basé sur le script de menu vertical dynamique de :
  48.         * Daniel Fabien - webmaster@script-masters.com
  49.         * Script Masters - http://www.script-masters.com/
  50.         * Modifié par mes soins
  51.         */
  52.         for (i=0; i<nbMenus; i++)
  53.         {
  54.            document.write('<a href="javascript:ouvre_menu(' + i + ', ' + nbMenus + ')"><li>' + menus[i] + '</a>');
  55.            document.write('<font style="display:none" id="ssmenu' + i + '"><ul>');
  56.            for (z=0; z<ssmenusNom[i].length; z++)
  57.            {
  58.                 document.write('-&nbsp;' + ssmenusNom[i][z] + '<br />');
  59.            }
  60.            document.write('</ul></font>');
  61.            document.write('</li>');
  62.         }
  63. }

Reply

Marsh Posté le 01-12-2004 à 15:26:17    

Et la console JS de FFox , elle dit quoi ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 01-12-2004 à 15:43:57    

0x90 a écrit :

Et la console JS de FFox , elle dit quoi ?

j'sais pas, il suffit de faire Tools/JavaScript Console sur la page en question ? Ca ne me dit rien du tout dans la popup[:spamafote]


Message édité par effisk le 01-12-2004 à 15:44:27
Reply

Marsh Posté le 01-12-2004 à 16:12:08    

tu l'ouvre, tu fait Clear, puis All, puis tu refresh ta page, la t'es a peu pres sur d'avoir tout ce qui peut avoir merdé sur ta page


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 01-12-2004 à 16:14:46    

rien, pas de message, nada. [:gratgrat]
 
tu peux essayer, la page est là : http://teetravel.com/destinations.php


Message édité par effisk le 01-12-2004 à 16:15:37
Reply

Marsh Posté le 01-12-2004 à 16:14:46   

Reply

Marsh Posté le 01-12-2004 à 16:28:54    

D'après ce que je vois, c'est plutot un problème de CSS/HTML la ... ( le menu est affiché on dirait, mais "compacté" )
 
effectivement, dans ton CSS, recherche :  
 #menu .menu_haut .text
et en dessous replace position:absolute par position:relative
ca va nettement mieux comme ca ;)
 
 
[edit]
 
Je suis c*n, jme suis trompé de menu ... enfin y'avait de toute facon un problème a cet endroit la ...


Message édité par 0x90 le 01-12-2004 à 16:31:50

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 01-12-2004 à 16:35:39    

0x90 a écrit :

D'après ce que je vois, c'est plutot un problème de CSS/HTML la ... ( le menu est affiché on dirait, mais "compacté" )
 
effectivement, dans ton CSS, recherche :  
 #menu .menu_haut .text
et en dessous replace position:absolute par position:relative
ca va nettement mieux comme ca ;)
 
 
[edit]
 
Je suis c*n, jme suis trompé de menu ... enfin y'avait de toute facon un problème a cet endroit la ...

huhuhu oui je me demandais de quoi tu me parlais un instant. Mais merci quand même, ce truc là m'emm_rdait depuis un moment.http://forum.hardware.fr/icones/message/icon14.gif
C'est marrant j'avais le souvenir d'avoir essayé sans résultat.
 
Reste plus que le truc en JS

Reply

Marsh Posté le 01-12-2004 à 16:36:50    

On dirait que ca vient de ca :

Code :
  1. //var ie=document.all;
  2. //var ns6=document.getElementById&&!document.all;


décommente le ca devrait aller mieux ...
 

effisk a écrit :

huhuhu oui je me demandais de quoi tu me parlais un instant. Mais merci quand même, ce truc là m'emm_rdait depuis un moment.http://forum.hardware.fr/icones/message/icon14.gif
C'est marrant j'avais le souvenir d'avoir essayé sans résultat.
 
Reste plus que le truc en JS


 
Pour débugger ce genre de truc :
 
- Tools -> DOM Inspector
- tu clique sur le ptit carré avec une fleche du DOM inspector, puis sur l'element qui t'emmerde, en dessous t'aura l'arbre déplié a l'endroit ou l'objet se trouve, sur le second pane, tu clique sur le ptit icone en haut et tu choisis CSS style rules, ou Computed Styles, Computed te donne le résultat appliqué a l'objet, CSS style rule te permet de modifier les CSS et de voir dessuite le résultat ;)


Message édité par 0x90 le 01-12-2004 à 16:39:33

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 01-12-2004 à 16:39:28    

0x90 a écrit :

On dirait que ca vient de ca :

Code :
  1. //var ie=document.all;
  2. //var ns6=document.getElementById&&!document.all;


décommente le ca devrait aller mieux ...

Ca ne fait aucune différence sous FF et ça ne marche plus sous IE.  :sweat:

Reply

Marsh Posté le 01-12-2004 à 16:41:40    

essaye de replacer les '' dans objet.style.display = ''; et l'autre dans le if par 'block' ou 'inline' voir ce que ca donne ... cela dit je comprends que ca puisse ne pas marcher en décommentant mais je comprends pas que ca puisse marcher en commentant ... sauf si y'a un autre script avant qui a déja reglé les variables ie et/ou ns6.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 01-12-2004 à 16:52:14    

0x90 a écrit :

essaye de replacer les '' dans objet.style.display = ''; et l'autre dans le if par 'block' ou 'inline' voir ce que ca donne ... cela dit je comprends que ca puisse ne pas marcher en décommentant mais je comprends pas que ca puisse marcher en commentant ... sauf si y'a un autre script avant qui a déja reglé les variables ie et/ou ns6.

oui pardon, je déclare avant
 

Code :
  1. var ie=document.all;
  2. var ns6=document.getElementById&&!document.all;
  3. var ancien_num_menu=-1;


 
j'avais déjà essayé 'block', je vais essayer 'inline' pour voir.
 
merci

Reply

Marsh Posté le 01-12-2004 à 16:56:09    

aucune différence, aussi bien pour 'block' que 'inline'...

Reply

Marsh Posté le 01-12-2004 à 17:05:13    

mmm jvois pas trop ce que ca pourrait être comme ca la .... cherche avec le DOM inspector ptêtre, mais a mon avis la solution c'est de partir sur un autre script plus propre ;)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 01-12-2004 à 17:12:43    

ouaip, je vais refaire un nouveau JS. Merci pour ton coup de main  :jap:  
 [:mad_oc@school]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed