关于树状菜单

自己写的树状菜单,感觉不错,给大家看看,我正在写一个更鲁棒的,过一段时间传上来。

//menu.js
function CreateMenu(menuname,menutext,imagetag)
{
document.write("<div id="+menuname+"><table BORDER=0 CELLSPACING=0 CELLPADDING=0>")
switch(imagetag)
{
case 1:
imgtag = "images\\topminus.gif"
break;
case 2:
imgtag = "images\\minus.gif"
break;
case 3:
imgtag = "images\\endminus.gif"
break;
default:
imagetag = "images\\topminus.gif"
break;
}
imgname = "img"+menuname
picname = "pic"+menuname
document.write("<TR><TD WIDTH=20><A HREF='javascript:ChangeMenu(\""+menuname+"\","+imagetag+")'><IMG id="+imgname+" SRC="+imgtag+" BORDER=0></A></TD>")
document.write("<TD WIDTH=20><IMG id="+picname+" SRC='images\\cf.gif' BORDER=0></TD>")
document.write("<TD COLSPAN=4><NOBR><FONT SIZE=-1 FACE='Arial, Helvetica'>"+menutext+"</FONT></TD></TR>")
document.write("</table></div>")
}

function CreateSubMenu(menuname,submenuname,submenunum,submenuarray,sublays,menutag)
{
switch(menutag)
{
case 1:
eval('document.all.img'+menuname+'.src="images/topplus.gif"')
break;
case 2:
eval('document.all.img'+menuname+'.src="images/plus.gif"')
break;
case 3:
eval('document.all.img'+menuname+'.src="images/endplus.gif"')
break;
default:
eval('document.all.img'+menuname+'.src="images/topplus.gif"')
break;
}

document.write("<div id="+submenuname+"><table BORDER=0 CELLSPACING=0 CELLPADDING=0>")
AddSubMenu(submenunum,submenuarray,sublays,menutag)
document.write("</table></div>")
}

function AddSubMenu(submenunum,submenuarray,sublays,menutag)
{
for (i=0;i<submenunum;i++)
{
document.write("<TR><TD></TD>")
for(j=0;j<sublays;j++)
if (menutag == 3)
document.write("<TD WIDTH=20></TD>")
else
document.write("<TD WIDTH=20><IMG SRC='images\\blankdots.gif' BORDER=0></TD>")

if (i == submenunum -1)
imgtag = "images\\enddots.gif"
else
imgtag = "images\\dots.gif"
document.write("<TD WIDTH=20><IMG SRC="+imgtag+" BORDER=0></TD>")
document.write("<TD WIDTH=20><IMG SRC='images\\doc.gif' BORDER=0></TD>")
document.write("<TD COLSPAN=4><NOBR><FONT SIZE=-1 FACE='Arial, Helvetica'>"+submenuarray[i]+"</FONT></TD></TR>")
}
}

function ChangeMenu(menutag,imagetag)
{
divroll = document.all.tags("DIV");
  for(i=0; i<divroll.length; i++)
  {
whichEl = divroll(i);
idtag = "Sub"+menutag
    if (whichEl.id == idtag)
    {
     if (whichEl.style.display == "none")
     {
     switch(imagetag)
{
case 1:
eval('document.all.img'+menutag+'.src="images/topminus.gif"')
break;
case 2:
eval('document.all.img'+menutag+'.src="images/minus.gif"')
break;
case 3:
eval('document.all.img'+menutag+'.src="images/endminus.gif"')
break;
default:
eval('document.all.img'+menutag+'.src="images/topminus.gif"')
break;
}
     whichEl.style.display = "block";
     eval('document.all.pic'+menutag+'.src="images/of.gif"')
     }
    else
     {
     switch(imagetag)
{
case 1:
eval('document.all.img'+menutag+'.src="images/topplus.gif"')
break;
case 2:
eval('document.all.img'+menutag+'.src="images/plus.gif"')
break;
case 3:
eval('document.all.img'+menutag+'.src="images/endplus.gif"')
break;
default:
eval('document.all.img'+menutag+'.src="images/topplus.gif"')
break;
}
     whichEl.style.display = "none";
     eval('document.all.pic'+menutag+'.src="images/cf.gif"')
     }
    }
  }
}

function InitMenu()
{
CreateMenu("Menu","This is Menu",1) //1. menu name 2. img number for the menu( 1-stand for first; 3-stand for end; others is 2)
menuarray = new Array('<A class=A1 href="test.htm">submenu1</A>','<A class=A1 href="test.htm">submenu2</A>','<A class=A1 href="test.htm">submenu3</A>')
CreateSubMenu("Menu","SubMenu",3,menuarray,1,1)
ChangeMenu("Menu",1)
CreateMenu("Menu1","This is Menu1",2)
menuarray = new Array('<A href="test.htm">submenu1</A>','<A class=A1 href="test.htm">submenu2</A>','<A href="test.htm">submenu3</A>','<A href="test.htm">submenu4</A>') //Menu array
CreateSubMenu("Menu1","SubMenu1",4,menuarray,1,2) //1. menu name 2. layer name 3. submenu number 4. submenu name array 5. layer number(no use now) 6.show image num
ChangeMenu("Menu1",2) // first time hide the layer
CreateMenu("Menu2","This is Menu2",2)
CreateMenu("Menu3","This is Menu3",3)
menuarray = new Array('<A href="test.htm">submenu1</A>','<A class=A1 href="test.htm">submenu2</A>','<A class=A1 href="test.htm">submenu3</A>')
CreateSubMenu("Menu3","SubMenu3",3,menuarray,1,3)
ChangeMenu("Menu3",3)
}

InitMenu()


//menu.htm
<html>
<STYLE TYPE='text/css'>
<!--
.A1 {text-decoration: none; color: #000000}
-->
</STYLE>
<body>
<script language="JavaScript" src="menu.js"></script>
</div>
</body>
</html>

所有的图片可由 http://casperlw.51.net/images.zip 下载,并建同名目录.