获取当前预算的样式不能用element.style, 它只是用来赋值的。故document.getElementById(e).style.display不会正确返回当前元素的display值,所以,会发生display属性是none时函数失效。
应该使用currentStyle或getComputedStyle(IE和Firefox分别支持)获取元素的样式对象,示例如下:
var o = document.getElementById(e), currentStyle;
currentStyle = o.currentStyle != null ? o.currentStyle : getComputedStyle(o, false);
然后这样获取display值:
switch (currentStyle.display) {
...
}
function show(e){
var i=document.getElementById(e).style.display;
switch (i){
case "block":{
document.getElementById(e).style.display="none";
break; }
case "none":document.getElementById(e).style.display="block";
}
}//
这样试试
先看看alert( document.getElementById(e).style.display );的值是啥?如果一开始css没有规定这个值很可能是null或者undefind而不是空。
是hover效果吗?
那样的话用css也能做
#menu ul { display: none; }
#menu li:hover ul { display: block;}