<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head>
<title>Destroydrop &raquo; Javascripts &raquo; Tree</title> <link rel="StyleSheet" href="dtree.css" type="text/css" />
<script type="text/javascript" src="dtree.js"></script></head><body onload="javascript: d.openAll();"><h1>&nbsp;</h1><div class="dtree">  <p><a href="javascript: d.openAll();">open all</a> | <a href="javascript: d.closeAll();">close all</a></p> <script type="text/javascript">
<!-- d = new dTree('d'); d.add(0,-1,'My example tree');
d.add(1,0,'Node 1','example01.html');
d.add(2,0,'Node 2','example01.html');
d.add(3,1,'Node 1.1','example01.html');
d.add(4,0,'Node 3','example01.html');
d.add(5,3,'Node 1.1.1','example01.html');
d.add(6,5,'Node 1.1.1.1','example01.html');
d.add(7,0,'Node 4','example01.html');
d.add(8,1,'Node 1.2','example01.html');
d.add(9,0,'My Pictures','example01.html','Pictures I\'ve taken over the years','','','img/imgfolder.gif');
d.add(10,9,'The trip to Iceland','example01.html','Pictures of Gullfoss and Geysir');
d.add(11,9,'Mom\'s birthday','example01.html');
d.add(12,0,'Recycle Bin','example01.html','','','img/trash.gif'); document.write(d); //-->
</script></div><p>&nbsp;</p></body></html>

解决方案 »

  1.   

    dTree对象本身没有定义这样的方法,不过应该可以用DOM方法来做:
    //把下面两行代码加到document.write(d);这一行后面试试
    var obj = document.getElementsByTagName('div')[0].getElementsByTagName('a');
    for (var i = 0; i < obj.length; i ++) if (obj[i].className == 'node') obj[i].href = 'demo.html';
      

  2.   

    或者给这段代码每个叶子节点加链接,怎样实现?求高人指点啊!!<html><head><META http-equiv="Content-Type" content="text/html; charset=GB2312"><title>文档管理</title><SCRIPT LANGUAGE="JavaScript">
    var tree;//节点树 
    var node;//指向getNode()的节点
    var tnode;//指向appendChild()的节点
    var doc;//leftFrame的document
    var present_code;//当前节点
    var present_sys;//当前子系统
    var pre_code;//
    var del_node;
    var cut_node;
    var pre_cut_code;
    var scroll_top=0;
    var scroll_left=0;
    var pasteType;
    var initLen = 5;
    var finalAuthStr = "";function refreshTree(){
      doc=leftFrame.window.document;
      doc.close();
      doc.open();
      doc.write("<html><body topmargin='0'><table width='300' style='font-family:宋体; font-size:13px;line-height: 10px' border=0 cellspacing=0 cellpadding=0 valign=center>");
      viewTree(tree[initLen],1,"",true);
      doc.write("</table></body></html>");
      leftFrame.window.scroll(scroll_left,scroll_top);
    }function createNode(code,name,sys_no)
    {
    var node = new Array;
    node[0]=code;//菜单编号
    node[1]=name;//菜单名称
    node[2]=0;//folder state
    node[3]=0;//node state
    node[4]=sys_no;
    return node;
    }function appendChild(parent_code,child_code,child_abs,sys_no){
      tnode=createNode(child_code,child_abs,sys_no);
      if(getNode(parent_code,tree,sys_no)){
        node[node.length]=tnode;
      }else{
        tree[tree.length]=tnode;
        present_code=child_code;
        present_sys=sys_no;
      }
    }function viewTree(subTree,depth,left,last){
      
        
        doc.write("<tr><td valign=bottom nowrap><table border=0 cellspacing=0 cellpadding=0 valign=center><tr><td nowarp>"+left);
       
        if (!last&&subTree.length>initLen&&subTree[3]==0){
          doc.write("<img src='images/plusl.gif' width=16 height=20 onclick='javascript:parent.clicked(\""+subTree[0]+"\",\""+subTree[4]+"\")'/>");
        }else if(!last&&subTree.length>initLen&&subTree[3]==1){
          doc.write("<img src='images/minusl.gif' width=16 height=20 onclick='javascript:parent.clicked(\""+subTree[0]+"\",\""+subTree[4]+"\")'/>");
        }else if(last&&subTree.length>initLen&&subTree[3]==0){
          doc.write("<img src='images/plusl.gif' width=16 height=20 onclick='javascript:parent.clicked(\""+subTree[0]+"\",\""+subTree[4]+"\")'/>");
        }else if(last&&subTree.length>initLen&&subTree[3]==1){
          doc.write("<img src='images/minusl.gif' width=16 height=20 onclick='javascript:parent.clicked(\""+subTree[0]+"\",\""+subTree[4]+"\")'/>");
        }else if(last&&subTree.length==initLen){
          doc.write("<img src='images/treelinesl.gif' width=16 height=20/>");
        }else if(!last&&subTree.length==initLen){
          doc.write("<img src='images/treelines.gif' width=16 height=20/>");
        }
        if (subTree[0]==present_code&&subTree[4]==present_sys){
         doc.write("<img src='images/openfolder.gif' height=20 style='cursor:hand' onclick='javascript:parent.nodeClicked(\""+subTree[0]+"\",\""+subTree[4]+"\",\""+subTree[4]+"\")'/>");
         doc.write("</td><td><a style='cursor:hand;color=#CC00FF' onclick='javascript:parent.nodeClicked(\""+subTree[0]+"\",\""+subTree[4]+"\",\""+subTree[4]+"\")'><font style='font-size:9pt;font-family:宋体'>"+subTree[1]+"</font></a>");
       }else{
          doc.write("<img src='images/closedfolder.gif' height=20 style='cursor:hand' onclick='javascript:parent.nodeClicked(\""+subTree[0]+"\",\""+subTree[4]+"\",\""+subTree[4]+"\")'/>");
          doc.write("</td><td><a style='cursor:hand' onclick='javascript:parent.nodeClicked(\""+subTree[0]+"\",\""+subTree[4]+"\",\""+subTree[4]+"\")'><font style='font-size:9pt;font-family:宋体'>"+subTree[1]+"</font></a>");
        }
        doc.write("</td></tr></table></td></tr>");    
        if(subTree[3]==0){return;}
       
      var depth_= depth+1;
      if (subTree.length>initLen){
      for(var i=initLen;i<subTree.length;i++){
        var left_=left;
        var last_=false;
        if(i==subTree.length-1){
          last_=true;
        }
        if(last){
          left_=left+"<img src='images/blank.gif' width=16 height=20/>";
        }else{
          left_=left+"<img src='images/line.gif' width=16 height=20/>";
        }
        if(subTree[i]!=null){
        viewTree(subTree[i],depth_,left_,last_);
        }
      }
      }
    }function getNode(code,subTree,now_sys){
      if(code=="")
      {
    node=tree[initLen];
    return true;
      }
      if(subTree[0]==code&&subTree[4]==now_sys){
        node=subTree;
        return true;
      }else{
        for (var i=initLen;i<subTree.length;i++){
          if (getNode(code,subTree[i],now_sys)){
            return true;
          }
        }
        return false;
      }
    }function getPreNode(code,subTree,sys_no){
      if(subTree[0]==code&&subTree[4]==sys_no){
        return false;
      }else{
        for (var i=initLen;i<subTree.length;i++){
          if(subTree[i][0]==code&&subTree[i][4]==sys_no){
    node=subTree;
    return true;
          }else{
    if(getPreNode(code,subTree[i],sys_no)){
      return true;
    }
          }
        }
        return false;
      }
    }function delNode(code,sys_no){
      if(getPreNode(code,tree,sys_no)){
        var temp_node=new Array;
        temp_node[0]=node[0];
        temp_node[1]=node[1];
        temp_node[2]=node[2];
        temp_node[3]=node[3];
        temp_node[4]=node[4];
        var j=5;
        for (var i=initLen;i<node.length;i++){
          if(!(node[i][0]==code&&node[i][4]==sys_no)){
            temp_node[j]=node[i];
    j++;
          }else{
            del_node=node[i];
    pre_code=node[0];
          }
        }
        present_code=node[0];
        present_sys=node[4];
        if(getPreNode(present_code,tree,present_sys)){
          for(var i=initLen;i<node.length;i++){
            if(node[i][0]==present_code&&node[i][4]==present_sys){
      node[i]=temp_node;
    }
          }
        }
        scroll_top=doc.body.scrollTop;
        scroll_left=doc.body.scrollLeft;
        
      }
    }function setNode(code,code_abs,now_sys){
      if (getNode(code,tree,now_sys)){
        node[1]=code_abs;
      }
    }
    function nodeClicked(doc_code1,menu_url,sys_no){
      present_code=doc_code1;
      present_sys=sys_no;
      scroll_top=doc.body.scrollTop;
      scroll_left=doc.body.scrollLeft;
      refreshTree();
      if(doc_code1=="")
      {
        mainFrame.location.href = "com.forlink.systemManage.menuAdmin.AddMenu";
      }
      else
      {
       refreshMain(doc_code1,menu_url,sys_no);
      }
      
    }function clicked(code,now_sys){
      if(getNode(code,tree,now_sys)){
        if (node[3]==0){
          node[3]=1;
        }else{
          node[3]=0;
        }
        scroll_top=doc.body.scrollTop;
        scroll_left=doc.body.scrollLeft;
        refreshTree();
      }
    }
    function refreshMain(op1,op2,op3)
    {
        mainFrame.location.href="com.forlink.systemManage.menuAdmin.MenuAdminMain?"+
          "NOWMENUNO="+op1+"&showPaste=false&NOWSYSNO="+op3;
    }function refreshTop(){
      parent.topFrame.location.href="/servlet/com.slait.docManager.Doc_top?"+
        "doc_code="+present_code;
    }function cutNode(code){
      if (getPreNode(code,tree)){
        pre_cut_code=node[0];
      }
      delNode(code);
      cut_node=del_node;
      pasteType="pasteCut";
      refreshTree();
    }
    function copyNode(code){
      if(getNode(code,tree)){
        cut_node=node;
        pre_cut_node=null;
        pasteType="pasteCopy";
      }
    }
    function pasteNode(code){
      if (getNode(code,tree)){
        node[node.length]=cut_node;
      }
      refreshTree();
    }
    function setPasteType(obj){
      obj.value=pasteType;
    }
    function uncutNode(){
      if (getNode(pre_code)){
        node[node.length]=cut_node;
      }
      refreshTree();
    }
    function cancle(){
      if (pre_cut_code==null){
        cut_node=null;
      }else if(cut_node!=null){
        if (getNode(pre_cut_code,tree)){
          node[node.length]=cut_node;
        }
        cut_node=null;
        pre_cut_code=null;
      }
      //refreshTree();
    }</SCRIPT>
    <SCRIPT LANGUAGE="JavaScript">
    tree = createNode("-1","","");
    appendChild("-1","",
    "系统功能模块管理","");appendChild("","0",
      "系统管理",
      "1");appendChild("","0",
      "配置管理",
      "2");appendChild("0","1",
      "帐号管理",
      "1");appendChild("0","2",
      "菜单管理",
      "1");appendChild("0","3",
      "配置管理",
      "1");appendChild("1","4",
      "用户信息",
      "1");appendChild("1","5",
      "组信息",
      "1");appendChild("2","6",
      "菜单维护",
      "1");appendChild("2","7",
      "菜单授权",
      "1");appendChild("3","8",
      "系统基础",
      "1");appendChild("0","10",
      "事务配置",
      "2");appendChild("10","11",
      "SP基本信息管理",
      "2");appendChild("0","12",
      "鉴权配置",
      "2");appendChild("12","21",
      "业务代码信息管理",
      "2");appendChild("12","22",
      "黑名单管理",
      "2");appendChild("12","23",
      "定购关系管理",
      "2");appendChild("12","24",
      "内容过滤信息管理",
      "2");appendChild("10","25",
      "网关信息管理",
      "2");appendChild("10","26",
      "存储重发配置管理",
      "2");appendChild("10","28",
      "手机号段信息管理",
      "2");appendChild("10","29",
      "短信中心信息管理",
      "2");appendChild("10","30",
      "连接平台情况查询",
      "2");appendChild("10","31",
      "SP在线日志查询",
      "2");appendChild("10","32",
      "错误码查询",
      "2");appendChild("0","33",
      "业务统计",
      "2");appendChild("0","34",
      "异常告警",
      "2");appendChild("0","35",
      "人工审核",
      "2");appendChild("0","36",
      "日志管理",
      "2");appendChild("36","37",
      "短信详单查询",
      "2");appendChild("36","38",
      "短信话单查询",
      "2");appendChild("36","39",
      "SP连接日志查询",
      "2");appendChild("36","40",
      "连接平台日志查询",
      "2");appendChild("36","41",
      "操作日志查询",
      "2");appendChild("0","42",
      "计费结算",
      "2");appendChild("42","43",
      "计费配置管理",
      "2");appendChild("42","44",
      "网间结算配置",
      "2");present_code=tree[5][0];
    present_sys=tree[5][4];
    </SCRIPT></head>
    <frameset onLoad="refreshTree();" cols="200,*" border="1" frameborder="NO" rows="*">
    <frame src="UntitledFrame-3.html" noresize="no" name="leftFrame">
    <frame src="UntitledFrame-4.html" noresize="no" name="mainFrame">
    </frameset><noframes></noframes>
    </html>