<HTML>
<HEAD>
<TITLE>Untitled Document</TITLE>
<SCRIPT language=javascript>
function Nba23()  //定义树状菜单对象
{
  this.start=function()  //菜单开始,bTop表示是否为最外层。
  {
    document.writeln("<table cellpadding=1 cellspacing=0>");
  }  this.end=function()  //菜单结束
  {
    document.writeln("</table>");
  }  this.addmenu=function(cText,cLink,bChild,bShow)  //为菜单增加项,参数依次为:菜单文字、菜单链接、是否有子菜单、子菜单是否显示。
  {
    document.writeln("<tr><td ><nobr><span class=icoface "+(bChild? "onclick=menuChange(this)":"")+" onMouseOver=return changecolor();>"
    +(bChild?(bShow?"-":"+"):"·")+"</span><span class=line-hight class=line-hight "+(bChild? "onclick=menuChange(this)":"")+">"+" <a href="+cLink+">"+cText+"</a></span></nobr></td></tr>");
     
  }// 想让连接在新窗口中打开,则把上面的<a href="+cLink+" >改为:<a href="+cLink+" target=_blank>  this.childStart=function(bShow)  //子选项开始,bShow为是否显示
  {
    document.writeln("<tr style='display:"+(bShow?"block":"none")+"'><td>");
    document.writeln("<table cellpadding=1 cellspacing=0 style='margin-left:12px;'>");
  }  this.childEnd=function()  //子选项结束
  {
    document.writeln("</table>");
    document.writeln("</td></tr>");  
  }
}function changecolor()
{
   document.all.style.background="#112233";
}
   function menuChange(obj)  //控制菜单显示/隐藏
{
  obj=obj.parentNode.parentNode.parentNode;
  obj.nextSibling.style.display=(obj.nextSibling.style.display=='none'?'block':'none');
  obj.cells[0].childNodes[0].childNodes[0].innerText=(obj.nextSibling.style.display=='none'?'+':'-')
}
</SCRIPT><STYLE type=text/css>A {
FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #000000; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal; TEXT-DECORATION: none
}
A:hover {
FONT: 12px 宋体; COLOR: #000000; BACKGROUND-COLOR: #cccccc; TEXT-DECORATION: underline overline
}
A:link {
FONT: 12px 宋体; COLOR: #000000; TEXT-DECORATION: none
}
.icoface {
BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; FONT: 7px/8px 宋体; OVERFLOW: hidden; BORDER-LEFT: black 1px solid; WIDTH: 9px; CURSOR: default; BORDER-BOTTOM: black 1px solid; HEIGHT: 9px; TEXT-ALIGN: center
}
.line-hight {
FONT: 8px 宋体
}
</STYLE><SCRIPT language=JavaScript type=text/JavaScript>
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</SCRIPT><SCRIPT language=JavaScript type=text/JavaScript>
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</SCRIPT><META content="MSHTML 6.00.2800.1226" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=0>
<TABLE id=table1 cellSpacing=0 cellPadding=0 width="100%" border=0>
<!--DWLayoutTable-->
  <TBODY>
  <TR>
    <TD width=54 height=16>&nbsp;</TD>
    <TD width=54>&nbsp;</TD>
    <TD width=678>&nbsp;</TD></TR>
  <TR>
    <TD id=td3 vAlign=top noWrap bgColor=#ff0000 height=13>
      <DIV align=right><A       onclick="document.all.item('td1').style.display='none';document.all.item('td3').style.display='none';document.all.item('td2').style.display='block'" 
      href="#">隐藏菜单 </A></DIV></TD>
    <TD id=td2 style="DISPLAY: none" vAlign=top noWrap bgColor=#cc00ff><A 
      onclick="document.all.item('td1').style.display='block';document.all.item('td3').style.display='block';document.all.item('td2').style.display='none'" 
      href="#">显示菜单 </A></TD>
    <TD vAlign=center noWrap align=left width="100%" bgColor=#cc00ff>
      <P align=left><FONT size=2>&nbsp;&nbsp;&nbsp;欢迎您:longshenwang 您的信誉分:100% 
      你的可用分:无穷大 </FONT></P></TD></TR>
  <TR>
    <TD id=td1 vAlign=top noWrap align=left bgColor=#99ff66 height=17>
      <SCRIPT language=javascript>
//生成菜单开始
var cmsNba23=new Nba23();
cmsNba23.start();
cmsNba23.addmenu("我的专家门诊","#url",1,0);  //后面两个参数分别表示是否有子菜单、子菜单是否显示
  cmsNba23.childStart(0);  //参数与上面最后一个参数一致,如上面若设为1, ,此行的参数就应该设为1,初始状态就为已伸展
   cmsNba23.addmenu("我的问题","#url",0);
  cmsNba23.addmenu("我参与问题","#url",0);
  cmsNba23.addmenu("我得分问题","#url",0);
  cmsNba23.addmenu("我的专家分","#url",0);
  cmsNba23.addmenu("我的收藏夹","#url",0);
  cmsNba23.addmenu("短消息","#url",0);  
  cmsNba23.addmenu("维护FAQ列表","#url",0);
  cmsNba23.addmenu("我的信誉分变化记录","#url",0);
  cmsNba23.childEnd();
cmsNba23.addmenu("WEB开发","#url",1,0)  //后面两个参数分别表示是否有子菜单,子菜单是否显示
  cmsNba23.childStart(0);  //参数与上面最后一个参数一致
  cmsNba23.addmenu("ASP","#url",0);
  cmsNba23.addmenu("Java JSP/Servlet/JavaBean ","#url",0);
  cmsNba23.addmenu("PHP","#url",0);
  cmsNba23.addmenu("JavaScript ","#url",0);
  cmsNba23.addmenu("CGI ","#url",0);
  cmsNba23.addmenu("XML/SOAP ","#url",0);
  cmsNba23.addmenu("HTML(CSS) ","#url",0);
  cmsNba23.addmenu("其它 ","#url",0);
  cmsNba23.childEnd();cmsNba23.addmenu("多媒体/设计","#url",1,1);  
  cmsNba23.childStart(1);  //参数与上面最后一个参数一致,同时为0则为隐藏,如上面若设为1,0 ,此行的参数就应该设为0,初始状态就为已收缩
  cmsNba23.addmenu("网页设计(Dreamweaver等)","#url",0);
 cmsNba23.addmenu("图象工具使用","#url",0);
 cmsNba23.addmenu("Flash流媒体 ","#url",0);
 cmsNba23.addmenu("多媒体设计(3DMaX, Maya等)","#url",0);
   cmsNba23.childEnd();cmsNba23.addmenu("其它","#url",1,0);  //后面两个参数分别表示是否有子菜单、子菜单是否显示
  cmsNba23.childStart(0);  //参数与上面最后一个参数一致
  cmsNba23.addmenu("子菜单一 (含)","#url",1,0);
    cmsNba23.childStart(0);
     cmsNba23.addmenu("子菜单一(1)","#url",0);
     cmsNba23.addmenu("子菜单一(2)","#url",0);
     cmsNba23.addmenu("子菜单一(3) (含)","#url",1,0);
    cmsNba23.childStart(0);
     cmsNba23.addmenu("子菜单一(3)(a)","#url",0);
     cmsNba23.addmenu("子菜单一(3)(b)","#url",0);
     cmsNba23.addmenu("子菜单一(3)(c)","#url",0);
     cmsNba23.childEnd();
    cmsNba23.childEnd();
  cmsNba23.addmenu("子菜单二","#url",0);
  cmsNba23.addmenu("子菜单三","#url",0);
  cmsNba23.addmenu("子菜单四","#url",0);
  cmsNba23.addmenu("子菜单五","#url",0);
  cmsNba23.addmenu("子菜单六","#url",0);
  cmsNba23.childEnd();cmsNba23.end();
//结束生成菜单函数
</SCRIPT>
      &nbsp;</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD height=255>&nbsp;</TD>
    <TD></TD>
    <TD></TD></TR></TBODY></TABLE>
<P>&nbsp;</P>
</BODY>
</HTML>

解决方案 »

  1.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <Script Language="JavaScript">
    //Name﹕無限層樹狀
    //Design:LiuZXIT
    //OverTime:2003/3/19
    //Note:在IE5.i上測試通過var strStyle='<style type="text/css">'
    strStyle+='span.SelectIng{color:#ff00ff;border:solid 1pt #666666;padding:0.5pt;height:4px;background-color:#cccccc;}'
    strStyle+='span.NoSelect{color:#000084;border:solid 1pt #ffffff;padding:0.5pt;height:4px;background-color:#ffffff;}'
    strStyle+='span.SelectEd{color:#D02090;border:solid 1pt #888888;padding:0.5pt;height:4px;background-color:#f3f3f3;}'
    strStyle+='</style>'
    document.write(strStyle)var myRs=new Array(), selectItem;
    function compare(a,b) {return parseInt(a[1]) - parseInt(b[1])}
    function InsertItem(s){myRs[myRs.length++] = s.split(/,/);}function ExCloAll(n){
    var d=document.all('0'), e=d.all.tags('div')
    for (i=0;i<e.length;i++)e[i].style.display=(n==1?'block':'none')
    e=d.all.tags('p')
    for (i=0;i<e.length;i++){if(ChkExist(e[i].children[1].value))e[i].children[0].innerText=(n==1?'- ':'+ ')}
    }function ExCloItem(){
    var c,e=event.srcElement, p=e.parentElement.children
    if(e.myHref!=''){
    alert((e.myTarget!=''?e.myTarget:'window')+'.location='+e.myHref) //要改成連接到某頁只需把alert改成eval即可
    //如果你不想觸發展合動作只需在這里加return;
    }
    else{window.status='no href'};
    if(selectItem!=null)selectItem.className='NoSelect';
    e.className='SelectEd'
    selectItem=event.srcElement;
    if(c=document.all(e.value)){
    p[0].innerText=(p[0].innerText=='+ '?'- ':'+ ')
    c.style.display=(c.style.display=='none'?'block':'none')
    }else{p[0].innerText='- '}
    }
    function ExCloItem2(){
    var c,e=event.srcElement, p=e.parentElement.children
    if(c=document.all(p[1].value)){
    e.innerText=(e.innerText=='+ '?'- ':'+ ')
    c.style.display=(c.style.display=='block'?'none':'block')
    }else e.innerText='- '
    }function OutItem(){
    var e=event.srcElement
    if(selectItem != '')e.className=(selectItem==e?'SelectEd':'NoSelect')
    else e.className='NoSelect'
    }function ChkExist(n){
    n=parseInt(n)
    if((n<myRs[0][1])||(n>myRs[myRs.length-1][1]))return false
    var a,b,c,x=0, y=parseInt(myRs.length/2), z=myRs.length-1
    while((x!=y)&&(y!=z)){
    a=myRs[x][1], b=myRs[y][1], c=myRs[z][1]
    if(n==a||n==b||n==c)return true
    if(n>b)x=y;
    else z=y;y=parseInt(x+z);
    y=parseInt((x+z)/2);
    }
    return false
    }function drawTree(n){
    if(n==0){
    myRs.sort(compare)
    document.write('<p style="font:10pt;cursor:hand;"><span onclick="ExCloAll(1)">全部展開</span>&nbsp;&nbsp;<span onclick="ExCloAll(0)">全部合攏</span></p>')
    }
    if (ChkExist(n)!=true)return
    document.write('<div id="'+n+'" style="font:10pt;cursor:hand;'+(n!=0?'position:relative;left:20;display:none;':'')+'">')
    for(var i=0;i<myRs.length;i++){
    if (parseInt(myRs[i][1])>n)break;
    if (myRs[i][1]==n){
    document.write('<p style="margin:0pt;"><span style="vertical-align:top;" onclick="ExCloItem2()">'+(ChkExist(myRs[i][0])?'+ ':'- ')+'</span>')
    document.write('<span onclick="ExCloItem()" myHref="'+(myRs[i].length>3?myRs[i][3]:'')+'" myTarget="' + (myRs[i].length>4?myRs[i][4]:'') +'" value="'+myRs[i][0]+'" class="NoSelect" onmouseout="OutItem()" onmouseover="this.className=\'SelectIng\'">'+myRs[i][2]+'</span></p>')
    if (myRs[i].length >3)document.write('</a>');
    drawTree(myRs[i][0])
    }
    }
    document.write('</div>')
    }InsertItem('1,0,根目錄1')
    InsertItem('11,1,子目錄1')
    InsertItem('111,11,孫目錄1,b.htm,parent.frmMain')
    InsertItem('1111,111,曾孫目錄,c.htm,top')
    InsertItem('11111,1111,玄孫目錄,d.htm,window')
    InsertItem('12,1,子目錄2')
    InsertItem('2,0,根目錄2')
    InsertItem('21,2,子目錄A,d.htm')
    InsertItem('22,2,子目錄B')
    InsertItem('3,0,根目錄3')
    InsertItem('31,3,子目錄C,e.htm')
    InsertItem('311,31,子目錄D,e.htm')
    drawTree(0)
    </Script></HEAD><BODY></BODY>
    </HTML>
      

  2.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <script language="JavaScript">
    <!--
    /*树型菜单原理*/
    function Expand(o){
    var io=o.open=="false"
    var n=o.uid
    o.innerHTML=io?"-":"+"
    document.getElementById("Child"+n).style.display=io?"":"none"
    o.open=io?"true":"false"
    }
    function ExpandAll(flag){
    var fld=document.getElementsByName("folder")
    for(i=0;i<fld.length;i++){
    fld[i].open=flag?"false":"true"
    Expand(fld[i])
    }
    }
    //-->
    </script>
    <a href="javascript:ExpandAll(true)">全部展开</a>
    <a href="javascript:ExpandAll(false)">全部合拢</a>
    <div><a href="" name="folder" uid=0 onclick="Expand(this);return(false)" open="false">+</a> <span>主菜单</span></div>
    <div id="Child0" style="display:none;padding-left:14">
    <div><span>#</span><span>子菜单</span></div>
    <div><span>#</span><span>子菜单</span></div>
    <div><span>#</span><span>子菜单</span></div>
    </div>
    <div><a href="" name="folder" uid=1 onclick="Expand(this);return(false)" open="false">+</a> <span>主菜单</span></div>
    <div id="Child1" style="display:none;padding-left:14">
    <div><span>#</span><span>子菜单</span></div>
    <div><span>#</span><span>子菜单</span></div>
    <div><span>#</span><span>子菜单</span></div>
    </div></BODY>
    </HTML>
      

  3.   

    我的XML方案:(简单实用,可扩展)这里是一个示例:
    http://javap2p.nease.net/xml-tree/index2.htm下载:http://javap2p.nease.net/xml-tree/tree.zip