怎么又是这个
哥们你这是用什么树型生成器生成的吧
不太好改,
我看看

解决方案 »

  1.   

    哥们,改是帮你改了,但是通用性不强,这主要是因为你的原始代码结构不合理,
    下面这个就是了:<html>
    <head>
      <script language=javascript>
        //cMenuClosed,cMenuOpened
        var cMenuClosed = "+";
        var cMenuOpened = "-";
        var cPreWidth = "10%";
        var cContentWidth = "90%";
        var cChildTrNamePre = "SubMenu_";
    var strStyle1="display:visiable";
    var strStyle2="display:none";
        //AAA
        var Root = new Array("AAA", "999999");
        var Offices = new Array();
        Offices[0] = "";
        Offices[1] = new Array();
        Offices[1][0] = "BBB";
        Offices[1][1] = "1";
        Offices[1][2] = "0";
        Offices[1][3] = new Array();
        Offices[1][3][0] = "";
        Offices[1][3][1] = new Array("C","100","3");
        Offices[1][3][2] = new Array("D", "101", "4");
        Offices[1][3][3] = new Array("E", "103", "2");
        Offices[1][3][4] = new Array("F", "104", "3");
        Offices[1][3][5] = new Array("G", "105", "0");    Offices[2] = new Array();
        Offices[2][0] = "H";
        Offices[2][1] = "2";
        Offices[2][2] = "0";
        Offices[2][3] = new Array();
        Offices[2][3][0] = "";
        Offices[2][3][1] = new Array("I","200","2");
        Offices[2][3][2] = new Array("J", "201", "1");
        Offices[2][3][3] = new Array("K", "203", "0");
        Offices[2][3][4] = new Array("L", "204", "0");
        Offices[2][3][5] = new Array("M", "205", "0");    var OfficeSelect = '103'; //这里的数字如果在树组中没有的话,则只展开根结点
        var OfficeSelectPath = new Array('999999','2');    function TNodes_Detail_Ck(Aele, eleid){
    var tableObj = document.getElementById(eleid);
    if(tableObj.style.display == "none"){
        Aele.innerHTML = cMenuOpened;
                tableObj.style.display = "";
            }else{
                Aele.innerHTML = cMenuClosed;
                tableObj.style.display = "none";
            }
        }    function inOfficeSelectPath(OfficeCode){
    for(var i=1; i<OfficeSelectPath.length-1; i++)
    if (OfficeSelectPath[i] == OfficeCode) return true;
    return false;
        }
        
        function TreeNodeSelect(ele){
    for(var i=0;i<document.all.length; i++){
    if (document.all[i].tagName=="TD"){
    if(document.all[i].id=="td_Office"){
    document.all[i].className="";
    }
    }
    }
    ele.parentElement.className = "treeSelect";
        }    function CreateOfficesTree(){
            //first create root
    try{
    document.writeln('<tr>');
    document.writeln('  <td width="'+cPreWidth+'" align="right" >');
    if(Offices.length==0){
    document.writeln(cMenuClose);
    }else{
    var bOpen = OfficeSelectPath.length>1?true:false;
    var cOpen = OfficeSelect>=0?true:false;
    var dOpen = bOpen&&cOpen;
    document.writeln('    <a href="#" onclick="TNodes_Detail_Ck(this,\''+cChildTrNamePre+Root[1]+'\')">' + (dOpen?cMenuOpened:cMenuClosed) + '</a>');
    }
    document.writeln('  <td width="'+cContentWidth+'" id="td_Office" '+(Offices==OfficeSelect?"class=treeSelect":"")+'>');
    document.writeln('    <a href="main.cgi?OfficeCode='+Root[1]+'" target="mainFrame" onclick="javascript:TreeNodeSelect(this)">'+Root[0]+'</a>');
    document.writeln('  </td>');
    document.writeln('</tr>');
    //second create offices
    if(Offices.length>1){
    document.writeln('  <tr id="'+cChildTrNamePre+Root[1]+'" style="'+(dOpen?strStyle1:strStyle2)+'">');
    document.writeln('    <td width="10%" align="right">');
    document.writeln('    </td>');
    document.writeln('    <td width="90%">');
    document.writeln('      <table width="100%" cellpadding="0" cellspacing="0" border="1">');

    //output Office level 1
    for(var i=1; i<Offices.length; i++){
    cOpen = parseInt(Offices[i][1])==parseInt(OfficeSelect)?true:false;
    if (!cOpen){
    for(var j=1; j<Offices[i][3].length; j++){
    if (parseInt(Offices[i][3][j][1])==parseInt(OfficeSelect))
    {
    cOpen = true;
    break;
    }else{
    cOpen = false;
    }
    }
    }
    dOpen = bOpen&&cOpen;
    document.writeln('         <tr>');
    document.writeln('           <td align="right" >');
    if(Offices[i][2].length==0){
    document.writeln('             '+cMenuOpened);
    }else{
    document.writeln('             <a href="#" onclick="TNodes_Detail_Ck(this,\''+cChildTrNamePre+Offices[i][1]+'\')">' + (dOpen?cMenuOpened:cMenuClosed) + '</a>');
    }
    document.writeln('           </td>');
    document.writeln('           <td  id="td_Office" '+(Offices[i][1]==OfficeSelect?"class=treeSelect":"")+'>');
    document.writeln('             <a href="main.cgi?OfficeCode='+Offices[i][1]+'" target="mainFrame" onclick="javascript:TreeNodeSelect(this)">'+Offices[i][0]+'</a>');
    document.writeln('           </td>');
    document.writeln('         </tr>');

    //output Office level 2
    if(Offices[i][3].length>1){
    document.writeln('        <tr id="'+cChildTrNamePre+Offices[i][1]+'" style="'+(dOpen?strStyle1:strStyle2)+'">');
    document.writeln('          <td align="right">');
    document.writeln('          </td>');
    document.writeln('          <td>');
    document.writeln('            <table width="100%" cellpadding="0" cellspacing="0" border="0">');
    //output Office level 3
    for(var j=1; j<Offices[i][3].length; j++){
    document.writeln('         <tr id="'+cChildTrNamePre+Offices[i][3][j][1]+'">');
    document.writeln('           <td width="10%" align="right">');
    document.writeln('             '+cMenuOpened);

    document.writeln('           </td>');
    document.writeln('           <td id="td_Office" '+(Offices[i][3][j][1]==OfficeSelect?"class=treeSelect":"")+'>');
    if(Offices[i][3][j][2]=="0"){
    document.writeln('             '+Offices[i][3][j][0]);
    }else{
    document.writeln('             <a href="main.cgi?OfficeCode='+Offices[i][3][j][1]+'" target="mainFrame" onclick="javascript:TreeNodeSelect(this)" >'+Offices[i][3][j][0]+'</a>');
    }
    document.writeln('           </td>');
    document.writeln('         </tr>');

    } // for
    document.writeln('            </table>');
    document.writeln('          </td>');
    document.writeln('        </tr>'); }
    }
    document.writeln('      </table>');
    document.writeln('    </td>');
    document.writeln('  </tr>');
    }
    }catch(e){
    alert("CreateOfficesTree:"+e);
    }
        }    
      </script>
    </head>
    <body topmargin="0" leftmargin="0">
    <table width="100%" cellpadding="0" cellspacing="0" border="0">
      <tr>
        <td width="100%" bgcolor="#99CCCC" align="center" colspan=3>
          tree
        </td>
      </tr>
    <script language=javascript>
    CreateOfficesTree();
    </script></table>
    </body>
    </html>
      

  2.   

    太感激了,楼上的兄弟~~我也觉得这个树通用性暴差~~