JS单击显示隐藏子菜单代码

JavaScript022

JS单击显示隐藏子菜单代码,第1张

你定义的a是全局变量,不管你点击的菜单是菜单一,还是菜单二都执行,不要这样写,直接加判断,点击菜单一时如果display是block就隐藏,否则显示

注:火狐和ie获取display的方法不同,用前先判断,要不不兼容

var

currentstyle

=

function(e){

return

e.currentstyle

||

document.defaultview.getcomputedstyle(e,

null)

}

if(currentstyle(document.getelementbyid(id))['display']=='none'){

document.getelementbyid(divname).style.display

=

"block"

}else{

document.getelementbyid(divname).style.display

=

"none"

}

这个也不复杂,不过感觉你的这个代码并不好的样子。

//根据id获取对象

function

$(id)

{

return

document.getElementById(id)

}

function

showMenu(baseID,divID)

{

baseID=$(baseID)

divID=$(divID)

if(showMenu.timer)clearTimeout(showMenu.timer)//清楚定时器

hideCur()//隐藏上个菜单

divID.style.display='block'//显示当前菜单

showMenu.cur=divID//保存当前菜单对象

if(!divID.isCreate)

{//该菜单没创建标志则设置为已创建

divID.isCreate=true

//divID.timer

=

0

divID.onmouseover=function

()

{//鼠标放在菜单上时显示

if(showMenu.timer)clearTimeout(showMenu.timer)

hideCur()

divID.style.display='block'

}

function

hide()

{//鼠标离开菜单1秒后隐藏菜单

showMenu.timer=setTimeout(function

()

{

divID.style.display='none'

},1000)

}

divID.onmouseout=hide

baseID.onmouseout=hide

}

function

hideCur()

{//隐藏上个菜单

showMenu.cur&&(showMenu.cur.style.display='none')

}

}