Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/02/2012, 18:39
barje
 
Fecha de Ingreso: julio-2009
Mensajes: 36
Antigüedad: 15 años, 4 meses
Puntos: 0
Problema con submenús que no se muestran

Buenas.

Tengo menús del tipo:
Código HTML:
Ver original
  1. <div class="botoneslink">
  2.    <div onclick="ehandler(event,menuitem1);" class="boton">
  3.       <a class="glink" id="boton1">
  4.          <img width="66" height="66" src="web_archives/img/botones/botones/01.png">
  5.       </a>
  6.    </div>
  7. </div>

Al pulsar se ejecuta la función ehandler (que copié de otro lugar) para abrir los submenús.
Código Javascript:
Ver original
  1. var time = 3000;
  2. var numofitems = <?php echo $menus; ?>;
  3. //menu constructor
  4. function menu(allitems,thisitem,startstate){
  5.   divname="subglobal"+thisitem;  
  6.   this.numberofmenuitems = allitems;
  7.   this.thediv = document.getElementById(divname);
  8.   this.thediv.style.visibility = startstate;
  9. }
  10. //menu methods
  11. function ehandler(event,theobj){
  12.   for (var i=1; i<= theobj.numberofmenuitems; i++){
  13.     var shutdiv =eval( "menuitem"+i+".thediv");
  14.     shutdiv.style.visibility="hidden";
  15.   }
  16.   theobj.thediv.style.visibility="visible";
  17. }
  18. function closesubnav(event){
  19.   if ((event.clientY <48)||(event.clientY > 107)){
  20.     for (var i=1; i<= numofitems; i++){
  21.       var shutdiv =eval('menuitem'+i+'.thediv');
  22.       shutdiv.style.visibility='hidden';
  23.     }
  24.   }
  25. }

Al final de la página tengo este otro script para que los submenús inicialmente estén ocultos:
Código Javascript:
Ver original
  1. <?php
  2. for ($i=1;$i<=$menus;$i++)
  3. { echo 'var menuitem'.$i.' = new menu('.$menus.','.$i.',"hidden");'; echo "\n";}
  4. ?>

Y construyo los submenús con php:
Código PHP:
Ver original
  1. for ($c=1;$c<=$menus;$c++)
  2. {
  3.     $sbm='sbmenu'.$c;
  4.     $sbmenu=$$sbm;
  5.     $d=0;
  6.     echo '<div id="subglobal'.$c.'" class="subglobalNav">'; echo "\n";
  7.     for ($u=1;$u<=$sbmenu;$u++)
  8.         {   $n_link=$c.$d.$u; urls_amigables($n_link); list ($link, $path) = urls_amigables($n_link);
  9.         echo '<span class="subgloballink"><a id="sboton'.$c.$u.'" class="sglink" href=""><img src="subbotones/sb'.$c.'/'.$u.'.gif" alt="'.$link.'" title="'.$link.'" /></a></span>'; echo "\n";
  10.         }
  11.     echo "</div>\n";
  12. }
Los submenús se construyen perfectamente. E inicialmente están ocultos. Pero al pulsar sobre el menú debería pasar de style="visibility: hidden;" a style="visibility: visible;" y eso no pasa.

Lo curioso es que si para construir los submenús utilizo este código sí que funciona perfectamente:
Código PHP:
Ver original
  1. <?php
  2. for ($c=1;$c<=$menus;$c++) {
  3.     $sbm='sbmenu'.$c;
  4.     $sbmenu=$$sbm;
  5.     $d=0;
  6. ?>
  7. <script type="text/javascript">
  8. var n=0
  9. function hazSubFila<?php echo $c; ?>CSS()
  10. {   var tx = '<div id="subglobal<?php echo $c; ?>" class="subglobalNav">'
  11.     for (i=1;i<=<?php echo $sbmenu; ?>;i++)
  12.    
  13.     {   tx += '<span class="subgloballink"><a id="sboton<?php echo $c; ?>'+i+'" class="sglink" href=""><img src="subbotones/sb<?php echo $c; ?>/'+i+'.gif" alt="" title="" /></a></span>'
  14.     }
  15.     tx += '</div>'
  16.     document.writeln(tx)  
  17. }
  18. hazSubFila<?php echo $c; ?>CSS()
  19. </script>
  20. <?php } ?>
El problema es que al hacer los submenús con javascript no puedo rellenar las etiquetas alt y title con php. Por eso no me sirve este código.

Lo curioso del caso es que, en el último código que he puesto, al quitar la línea var n=0 los sumbenús dejan de mostrarse y se comportan exactamente como en el caso anterior.

Así que necesito una ayuda para poder terminar de hacer visibles estos submenús y poder rellenar las etiquetas alt y title.

Gracias por anticipado.