Llevo varios dias buscando solución a mi problema en este foro, pero al no ver respuesta, he decidido a escribir. Estoy programando una pagina web, a la cual podeis acceder temporalmente aqui hl22.dinaserver.com/hosting/albicius.com
Si os fijais a la izquierda tiene un menu desplegable que funciona perfectamente en Mozilla y Safari pero no en IE. En éste último la primera vez que abres un menu se cierra automaticamente y ademas no genera el efecto opacity.
Este es el codigo:
Código:
var DDSPEED = 4; var DDTIMER = 1; var OFFSET = 0; var ZINT = 100; function ddMenu(id,d){ var h = document.getElementById(id + '-ddheader'); var c = document.getElementById(id + '-ddcontent'); clearInterval(c.timer); if(d == 1){ clearTimeout(h.timer); c.style.display = 'block'; if(c.maxh && c.maxh <= c.offsetHeight){return} else if(!c.maxh){ c.style.left = (OFFSET) + 'px'; c.style.height = 'auto'; c.maxh = c.offsetHeight; c.style.height = '0px'; } ZINT = ZINT + 1; c.style.zIndex = ZINT; c.timer = setTimeout(function(){ddOpen(c)},500); }else{ h.timer = setTimeout(function(){ddCollapse(c)},1000); } } function ddOpen(c){ c.timer = setInterval(function(){ddSlide(c,1)},DDTIMER); } function ddCollapse(c){ c.timer = setInterval(function(){ddSlide(c,-1)},DDTIMER); } function cancelHide(id){ var h = document.getElementById(id + '-ddheader'); var c = document.getElementById(id + '-ddcontent'); clearTimeout(h.timer); clearInterval(c.timer); if(c.offsetHeight < c.maxh){ c.timer = setInterval(function(){ddSlide(c,1)},DDTIMER); } } function ddSlide(c,d){ var currh = c.offsetHeight; var dist; nombreNav = navigator.appName if (nombreNav == 'Microsoft Internet Explorer') { c.style.display = ''; } else { c.style.display = 'noblock'; } if(d == 1){ dist = Math.round((c.maxh - currh) / DDSPEED); }else{ dist = Math.round(currh / DDSPEED); } if(dist <= 1 && d == 1){ dist = 1; } c.style.height = currh + (dist * d) + 'px'; /*if (nombreNav == 'Microsoft Internet Explorer') { c.style.filter = 'alpha(opacity='+currh/c.maxh+')'; c.style.filter = 'alpha(opacity='+(currh * 100 / c.maxh)+')'; } else { */ c.style.opacity = currh / c.maxh; /* } */ if(currh > (c.maxh - 2) && d == 1){ clearInterval(c.timer); }else if(dist < 1 && d != 1){ clearInterval(c.timer); c.style.display = 'none'; } }
Desde la página php llamo al codigo de la siguiente manera:
Código:
Donde 22 es el id del menu (cada menu tiene un id obtenido por SQL)<td class="boxText"><dl class="dropdown"> <dt id="22-ddheader" class="upperdd" onmouseover="ddMenu('22',1)" onmouseout="ddMenu('22',-1)" onClick="document.location='#'"> Menu1 </dt> <dd id="22-ddcontent" onmouseover="cancelHide('22')" onmouseout="ddMenu('22',-1)"></td><ul></dd> </dl><li> Submenu1 </li></ul>
Espero que me podais ayudar.
Gracias de antemano!
Santiago