Foros del Web » Programando para Internet » Javascript »

Problema con menú desplegable...

Estas en el tema de Problema con menú desplegable... en el foro de Javascript en Foros del Web. Hola, tengo el siguiente menu desplegable, el problema es que no consigo que la categoría activa se cierre cuando se abre una nueva... Código: <script ...
  #1 (permalink)  
Antiguo 25/02/2006, 22:18
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Pregunta Problema con menú desplegable...

Hola, tengo el siguiente menu desplegable, el problema es que no consigo que la categoría activa se cierre cuando se abre una nueva...

Código:
<script type="text/javascript">
<!--
var browserType;
if (document.layers) {browserType = "nn4"}
if (document.all) {browserType = "ie"}
if (window.navigator.userAgent.toLowerCase().match("gecko")) {browserType= "gecko"}

function show(what) {
  if (browserType == "gecko" )
     document.poppedLayer = eval('document.getElementById(\''+what+'\')');
  else if (browserType == "ie")
     document.poppedLayer = eval('document.all[\''+what+'\']');
  else
     document.poppedLayer = eval('document.layers[\''+what+'\']');
  document.poppedLayer.style.display = "block";
}

function hide(what) {
  if (browserType == "gecko" )
     document.poppedLayer = eval('document.getElementById(\''+what+'\')');
  else if (browserType == "ie")
     document.poppedLayer = eval('document.all[\''+what+'\']');
  else
     document.poppedLayer = eval('document.layers[\''+what+'\']');
  document.poppedLayer.style.display = "none";
}
//-->
</script>
y en el tag BODY:

Código:
<li>
<a href="javascript:show('cat1');">Categoría 1</a>
</li>
<div id="cat1" style="display:none;">
prueba 1<br />
prueba 2<br />
</div>
<li>
<a href="javascript:show('cat2');">Categoría 2</a>
</li>
<div id="cat2" style="display:none;">
prueba 3<br />
prueba 4<br />
</div>

Espero que alguien me pueda ayudar!!!

salu3!!!
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #2 (permalink)  
Antiguo 28/02/2006, 19:57
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Por favor alguien que me ayude!!!

Espero respuestas (por favor!)...

Muchas gracias a todos...
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #3 (permalink)  
Antiguo 01/03/2006, 02:07
 
Fecha de Ingreso: julio-2005
Mensajes: 31
Antigüedad: 18 años, 9 meses
Puntos: 0
De acuerdo

Toma, a ver que te parece esta solución

Código:
<script type="text/javascript">
  <!--
    /**
    * Variable que guardará el id de la capa activa
    */
    var activeLayer = "undefined";
    /**
    * Variable que guardará el navegador que es
    */
    var browserType;
    if(document.layers){
      browserType = "nn4"
    }
    if(document.all){
      browserType = "ie"
    }
    if(window.navigator.userAgent.toLowerCase().match("gecko")){
      browserType= "gecko"
    }
    
    /**
    * Función que muestra la capa que se le pasa en el parámetro
    *
    * @param what {string} mandatory Parámetro con el ID de la capa a tratar
    */
    function show(what){
      var poppedLayer;
      if (browserType == "gecko" ){
         poppedLayer = document.getElementById(what);
      } else if (browserType == "ie"){
         poppedLayer = document.all[what];
      }else{
         poppedLayer = document.layers[what];
      }
      poppedLayer.style.display = "inline";
      hide(activeLayer);
      activeLayer = what;
    }
    
    /**
    * Función que oculta la capa que se le pasa en el parámetro
    *
    * @param what {string} mandatory Parámetro con el ID de la capa a tratar
    */
    function hide(what) {
      var poppedLayer;
      if(what != "undefined"){
        if (browserType == "gecko" ){
           poppedLayer = document.getElementById(what);
        } else if (browserType == "ie"){
           poppedLayer = document.all[what];
        }else{
           poppedLayer = document.layers[what];
        }
        poppedLayer.style.display = "none";
      }
    }
  //-->
</script>
Simplemente hacemos que "recuerde" que tiene una capa activa y que ha de ocultarla al mostrar otra.

Un saludo
  #4 (permalink)  
Antiguo 01/03/2006, 16:11
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
te agradezco mucho jorgezazo!!!

salu3
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
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 00:05.