Foros del Web » Programando para Internet » Javascript »

menu contractil,que se mantenga abierto

Estas en el tema de menu contractil,que se mantenga abierto en el foro de Javascript en Foros del Web. Buenos días compañeros; Estoy usando un menú contractil que es muy sencillo, pero para variar necesito complicarlo. El menú está hecho en javascript, y lo ...
  #1 (permalink)  
Antiguo 06/03/2008, 05:55
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
Pregunta menu contractil,que se mantenga abierto

Buenos días compañeros;

Estoy usando un menú contractil que es muy sencillo, pero para variar necesito complicarlo. El menú está hecho en javascript, y lo estoy haciendo dinámico con PHP.
Cuando pincho en una opcion se me abren los submenus, y cuando pincho en otra opcion, se cierran los antiguos submenus y se abren los correspondientes. Hasta ahí todo perfecto.

Mi problema viene a que necesito que al abrir un submenú, y al pinchar en uno de los enlaces, cuando se recargue la página necesito que los submenús que estaban abiertos sigan abiertos... pero no se como adaptar la funcion javascript o que hacer para ello. He probado a pasar el id y al recogerlo llamar a la funcion mostrar, pensando en que se va a abrir con el id que le paso, pero no es así.

Alguna sugerencia porfavor?????

MUCHISIMAS GRACIAS DE ANTEMANO POR TODO

Os adjunto el codigo que es muy sencillo:
Función:
Código HTML:
<script>
var result; 
function obtenerid(dentrodeque){
frase=document.getElementById(dentrodeque).innerHTML;
result=new Array(); 
result=frase.match(/\b\s+id=[^>\s]+\b/g);
for(i=0;i<result.length;i++){
result[i]=result[i].split('"').join('');
result[i]=result[i].split('id=').join('');
result[i]=result[i].split(' ').join('');
}
}
function mostrar(que){
for(i=0;i<result.length;i++){
if(que==result[i]){
if(document.getElementById(que).style.display=='none')
	{
	document.getElementById(que).style.display='block';}else{document.getElementById(que).style.display='none';
	}
}else{
eval("document.getElementById('"+result[i]+"').style.display='none'");
}
}
}
</script> 
En el body:
Código HTML:
onLoad="obtenerid('contenedor_menu')"
Desarrollo del menú con las consultas de la BD:
Código PHP:
<div id="contenedor_menu" style="width:180px; margin-left:5px;">
<img src="/wga/wga_imagenes/menu_desplegable/titulo_menu.jpg" alt="Men&uacute;" width="180" border="0" align="left"><br /><br />



<!-- inicio menu 1-->
<?php
$oConn 
fnOraConnect();
$aResultP=array();
$aResultH=array();
$aRes select01_usuario($oConn,$_SESSION['usuario']);
$iUsrAdmin=$aRes[0]["usr_admin"];

if(
$iUsrAdmin==1){
    
$stUrlwId = isset($_GET['id']) ? $_GET['id'] : '' ;
            if(
$stUrlwId){
?>
 <script language="JavaScript">
        mostrar('<?=$stUrlwId?>');
 </script>
 <? 

    
$aResultP select02_urlW($oConn);

        
$p=0;
        while (
$p<count($aResultP))
        {
            
$stUrlwId=$aResultP[$p]["urlW_id"] ;
            
$stUrlwDir=$aResultP[$p]["urlW_dir"];
            
$stUrlwNombre=$aResultP[$p]["urlW_nombre"];
            
?>
    <div class="principal" onClick="mostrar('<?=$stUrlwId?>')"><a href="<?php if($stUrlwDir==""){echo "#";}else{echo $stUrlwDir;}?>"><img src="/wga/wga_fuentes/wga_f_estaticos/wga_f_menu/img/icon2_o.gif" width="21" height="15" border="0" align="absmiddle"> 
    <?=$stUrlwNombre;?>
    </a></div>
    <div id="<?=$stUrlwId?>" style="display:none;">
        <?PHP
            $aResultH 
select03_urlW($oConn,$stUrlwId);

            
$h=0;
            while (
$h<count($aResultH))
            {
                
$stUrlwIdH=$aResultH[$h]["urlW_id"] ;
                
$stUrlwDirH=$aResultH[$h]["urlW_dir"];
                
$stUrlwNombreH=$aResultH[$h]["urlW_nombre"];
            
?>
        <div class="secundario" ><a href="<?=$stUrlwDirH?>?id=<?=$stUrlwId?>"><img src="/wga/wga_fuentes/wga_f_estaticos/wga_f_menu/img/iconarrs.gif" border="0"> <?=$stUrlwNombreH?></a></div>
<?php
            $h
++;
            }
            
?>

</div>

    <?php
        $p
++;
        }
    
?>

<?php
$oConn 
fnOraDisconnect($oConn);
}
?>
    
<!--fin menu 1-->

</div>

Última edición por susaninhax; 06/03/2008 a las 05:58 Razón: para que se entienda el codigo php
  #2 (permalink)  
Antiguo 06/03/2008, 06:22
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
De acuerdo Re: menu contractil,que se mantenga abierto

Disculpar chicos, ya lo he conseguido, he probado a poner en el display:none; del submenú esta sentencia:

Código PHP:
<?php if($Id==$stUrlwId){?>block<? }else{?>none<? ?>;
y no necesitaría hacer la llamada a la funcion mostrar, solo necesito recoger el valor que viene por Get $Id = isset($_GET['id']) ? $_GET['id'] : '' ; junto con la linea anterior y listo.

Esto sobraría:

Código PHP:
<? if($stUrlwId){
?>
 <script language="JavaScript">
        mostrar('<?=$stUrlwId?>');
 </script>
 <? }?>
Perdonar las molestias, si a alguien le sibe el codigo perfecto o si lo necesita enter y mejor detallado pos mensajito privado

Un saludo y gracias a todos, este foro me ayuda muchísimo, es genial!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:39.