日期:2014-05-17  浏览次数:20797 次

点击一个菜单隐藏和显示遇到的问题
下面这段代码是正确的,我从别处找到的,但我有个地方看不懂
就是红字部分,那和oMenu我找了半天不知道这个是哪的。大概知道是表示状态的。知道的人帮解释下。

<html>
<head>
<title>自动收缩的菜单</title>
</head>
<body link="#000000">
<!--将以下代码加入HTML的<Body></Body>之间-->
<script language="JavaScript1.2">
ie=document.all?1:0
n=document.layers?1:0
lshow=60
var move=10;
menuSpeed=40
var moveOnScroll=true
var tim;
var ltop;

function makeMenu(obj,nest){
nest=(!nest) ? '':'document.'+nest+'.'
this.css=(n) ? eval(nest+'document.'+obj):eval(obj+'.style')
this.state=1
this.go=0
this.width=n?this.css.document.width:eval(obj+'.offsetWidth')
this.left=b_getleft
this.obj = obj + "Object"; eval(this.obj + "=this")
}

function b_getleft(){
var gleft=(n) ? eval(this.css.left):eval(this.css.pixelLeft);
return gleft;
}

function moveMenu(){
if(!oMenu.state){
clearTimeout(tim)
mIn()
}else{
clearTimeout(tim)
mOut()
}
}

function mIn(){
if(oMenu.left()>-oMenu.width+lshow){
oMenu.go=1
oMenu.css.left=oMenu.left()-move
tim=setTimeout("mIn()",menuSpeed)
}else{
oMenu.go=0
oMenu.state=1
}
}

function mOut(){
if(oMenu.left()<0){
oMenu.go=1
oMenu.css.left=oMenu.left()+move
tim=setTimeout("mOut()",menuSpeed)
}else{
oMenu.go=0
oMenu.state=0
}
}

function checkScrolled(){
if(!oMenu.go) oMenu.css.top=eval(scrolled)+ltop
if(n) setTimeout('checkScrolled()',30)
}

function menuInit(){
oMenu=new makeMenu('divMenu')
scrolled=n?"window.pageYOffset":"document.body.scrollTop"
oMenu.css.left=-oMenu.width+lshow
ltop=(n)?oMenu.css.top:oMenu.css.pixelTop;
oMenu.css.visibility='visible'
if(moveOnScroll) ie?window.onscroll=checkScrolled:checkScrolled();
}
onload=menuInit;
</script>
<div id="divMenu"
style="position: absolute; top: 163; left: 35; width: 173; visibility: hidden; background-color: ccccff; height: 19"><nobr>
<a href="#">图片</a>- <a href="#">字体</a>- <a href="#">下载</a>- <a href="#">素材</a>-
<a href="#">综合</a>- -- <a
style="background-color: blue; text-decoration: none"
href="javascript://" onclick="moveMenu()">导航菜单</a></nobr></div>
</body>
</html>

------解决方案--------------------
oMenu=new makeMenu('divMenu')
在一个函数里,不用var来限制的话,生命周期为全局。
变成var oMenu=new makeMenu('divMenu')的话,就只能在函数里用了。