下面这段代码是正确的,我从别处找到的,但我有个地方看不懂
就是红字部分,那和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>

解决方案 »

  1.   

    上面问题我知道了是加载时,创建的对象我追问scrolled=n?"window.pageYOffset":"document.body.scrollTop"什么意思
      

  2.   

    高手在哪里?为什么这个函数里oMenu   new出来的对象在别的函数也可以用。。求解啊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();
    }
      

  3.   

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