Foros del Web » Programando para Internet » Javascript »

Problema con desplegable en IE

Estas en el tema de Problema con desplegable en IE en el foro de Javascript en Foros del Web. Buenas. Mi problema esta en un menu desplegable que he hecho. El fallo me lo da en IE 9, pero solo en modo de vista ...
  #1 (permalink)  
Antiguo 11/05/2012, 00:05
 
Fecha de Ingreso: abril-2011
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Problema con desplegable en IE

Buenas.
Mi problema esta en un menu desplegable que he hecho. El fallo me lo da en IE 9, pero solo en modo de vista de compatibilidad, con lo que supongo que el fallo lo da IE7, el problema es que no despliega el menu. El codigo del script que uso es :

var inicio=function()
{
var x =0;
var aumentar=function(e)
{
var ul=this.getElementsByTagName("UL")[0];

if(ul.alto===undefined)
ul.alto=ul.clientHeight * -1;
var f=function()
{
if(ul.alto<190 )
{
ul.alto+=2;
ul.style.height=ul.alto+"px";
}
}
window.clearInterval(ul.t1);
ul.t1=window.setInterval(f,1);
}
var parar=function(e)
{
var ul=this.getElementsByTagName("UL")[0];
var d=function()
{
if(ul.alto>0)
{
ul.alto-=2;
ul.style.height=ul.alto+"px";
}
}
window.clearInterval(ul.t1);
ul.t1=window.setInterval(d,1);
}
var h1=document.getElementsByTagName("H1");
for (var i=0;i<h1.length;i++)
{
if(i!=0 && i<=6)
{
h1[i].parentNode.onmouseover=aumentar;
h1[i].parentNode.onmouseout=parar;
}
}
}

Y creo que se donde esta el fallo, pero no la solucion. El error me lo da en "ul.style.height=ul.alto+"px";", y supongo que es que no reconoce el valor al no estar entrecomillado, pero al cogerlo de una variable, no se como ponerlo para que no me de fallo.

A ver si alguien me sabe ayudar.
Gracias
  #2 (permalink)  
Antiguo 11/05/2012, 22:28
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Respuesta: Problema con desplegable en IE

Hola!

Pueden ser varias cosas, trata de usar minusculas al seleccionar los elementos entre comillas ("UL">"ul"). Tambien prueba creando las propiedades en variables independientes (ul.alto>alto).

Mira la mejor forma de solucionar un problema asi, primeramente te recomiendo que estructures tu codigo fuente, agregando espacios dependiendo la anidacion que tenga tu codigo.

Ejemplo:
Código Javascript:
Ver original
  1. function a() {
  2.     var z = true;
  3.     if ( z ) {
  4.         return true;
  5.     }
  6. }
Yo generalmente uso el tabuleador o 4 espacios.

Y ya por seguido, empieza desde la raiz del problema, en tu caso seria comenzar analizando desde donde llamas a la lista "ul" con getElementsByTagName.

Asi, puedes usar la consola web de firefox, la verdad que es la mejor herramienta que he usado para depurar mis aplicaciones.

Ya por ultimo te recomiendo que te animes a usar la biblioteca de jQuery, esta te ayuda bastante a hacer todas estas cosas con compatibilidad y buen funcionamiento.

Con jQuery serian tan sencillo como hacer

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $('ul li').hover(function(){
  3.         $(this).parent().slideToggle("fast");
  4.     });
  5. });

Como vez asi logras hacerlo mas facil, saludos!
  #3 (permalink)  
Antiguo 12/06/2012, 09:46
 
Fecha de Ingreso: mayo-2012
Mensajes: 4
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Problema con desplegable en IE

Hola, fijense que a mi me ocurre algo similar al desplegar un menu en IE9 con vista de compatibilidad, ya usea la libreria de jquery (jdmenu) pero me muestra "false" cada vez que paso el mouse sobre alguna de las opciones del menu.

quize empezar a crear el menu desde cero, pues no se si es problema con la libreria o con qué; pero al ir realizando un menú cualquiera, resulta que los "ul" y "li" se ven distintos en vista de compatibilidad, así que no sé si el problema sea directamente la compativilidad y los elementos html que no se ven de la misma manera o q será, de todas maneras no logro entender de donde proviene el false

ojala se les ocurra alguna idea !
saludos

Etiquetas: desplegable
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 17:23.