用js实现风迅3.2的树型菜单

本文介绍如何使用ASP技术和JavaScript实现一个实时更新的树型导航菜单,该菜单能够根据数据库中的分类信息动态生成,并支持展开和折叠操作,提高了网站导航的便捷性和用户体验。

我在使用FS3.2时特别想实现树型导航菜单,这样很方便能为访问者提供导航方便;因此我先采用asp实现树的功能,那么用fs的自由标签也能实现这个菜单。

<% Option Explicit %> <!--#include file="Inc/Const.asp" --> <!--#include file="Inc/Cls_DB.asp" --> <% Dim DBC Set DBC = New DataBaseClass Set Conn = DBC.OpenConnection() Set DBC = Nothing %> <%     Dim Conn, rs,Sql     Set rs    = Server.CreateObject("ADODB.Recordset")     Sql = "Select TOP 300 * from FS_NewsClass order by ID"     Set rs = Server.CreateObject(G_FS_RS)     rs.Open Sql,Conn,1,1 %> <div style="padding:10px 0 0 10px; border-top:1px solid #ddd; background:#fff "> <script language="JavaScript"> <!-- //MzTreeView1.0网页树类, 在实例化的时候请把实例名作参数传递进来 function MzTreeView(Tname) {   if(typeof(Tname) != "string" || Tname == "")     throw(new Error(-1, '创建类实例的时候请把类实例的引用变量名传递进来!'));      //【property】   this.url      = "#";   this.target   = "_self";   this.name     = Tname;   this.wordLine = false;   this.currentNode = null;   this.useArrow = true;   this.nodes = {};   this.node  = {};   this.names = "";   this._d    = "/x0f";   this.index = 0;   this.divider   = "_";   this.node["0"=   {     "id""0",     "path""0",     "isLoad"false,     "childNodes": [],     "childAppend""",     "sourceIndex""0"   }; //文字颜色设置   this.colors   =   {     "highLight" : "#0A246A",     "highLightText" : "#FFFFFF",     "mouseOverBgColor" : "#D4D0C8"   };   //节点的图式   this.icons    = {     L0        : 'L0.gif',  //     L1        : 'L1.gif',  //     L2        : 'L2.gif',  //     L3        : 'L3.gif',  //     L4        : 'L4.gif',  //     PM0       : 'P0.gif',  //+┏     PM1       : 'P1.gif',  //+┣     PM2       : 'P2.gif',  //+┗     PM3       : 'P3.gif',  //+━     empty     : 'L5.gif',     //空白图     root      : 'root.gif',   //缺省的根节点图标     folder    : 'folder.gif', //缺省的文件夹图标     file      : 'file.gif',   //缺省的文件图标     exit      : 'exit.gif'   };   this.iconsExpand = {  //存放节点图片在展开时的对应图片     PM0       : 'M0.gif',     //-┏     PM1       : 'M1.gif',     //-┣     PM2       : 'M2.gif',     //-┗     PM3       : 'M3.gif',     //-━     folder    : 'folderopen.gif',     exit      : 'exit.gif'   };   //扩展 document.getElementById(id) 多浏览器兼容性   //id 要查找的对象 id 根据查找ID,获取焦点   this.getElementById = function(id)   {     if (typeof(id) != "string" || id == ""return null;     if (document.getElementById) return document.getElementById(id);     if (document.all) return document.all(id);     try {return eval(id);} catch(e){ return null;}   }   //MzTreeView 初始化入口函数   this.toString = function()   {     this.browserCheck();     this.dataFormat();     this.setStyle();     this.load("0");     var rootCN = this.node["0"].childNodes;     var str = "<A id='"+ this.name +"_RootLink' href='#' style='DISPLAY: none'></A>";          if(rootCN.length>0)     {       this.node["0"].hasChild = true;       for(var i=0; i<rootCN.length; i++)         str += this.nodeToHTML(rootCN[i], i==rootCN.length-1);       setTimeout(this.name +".expand('"+ rootCN[0].id +"', true); "+          this.name +".focusClientNode('"+ rootCN[0].id +"'); "+ this.name +".atRootIsEmpty()",10);     }     if (this.useArrow)  //使用方向键控制跳转到上级下级父级子级节点     {       if (document.attachEvent)           document.attachEvent("onkeydown"this.onkeydown);       else if (document.addEventListener)           document.addEventListener('keydown', this.onkeydown, false);     }     return "<DIV class='MzTreeView' "+       "onclick='"+ this.name +".clickHandle(event)' "+       "ondblclick='"+ this.name +".dblClickHandle(event)' "+       ">"+ str +"</DIV>";   };   this.onkeydown= function(e)   {     e = window.event || e; var key = e.keyCode || e.which;     switch(key)     {       case 37 : eval(Tname).upperNode(); break;  //Arrow left, shrink child node       case 38 : eval(Tname).pervNode();  break;  //Arrow up       case 39 : eval(Tname).lowerNode(); break;  //Arrow right, expand child node       case 40 : eval(Tname).nextNode();  break;  //Arrow down     }   }; } //浏览器类型及版本检测 MzTreeView.prototype.browserCheck = function() {   var ua = window.navigator.userAgent.toLowerCase(), bname;   if(/msie/i.test(ua))   {     this.navigator = /opera/i.test(ua) ? "opera" : "";     if(!this.navigator) this.navigator = "msie";   }   else if(/gecko/i.test(ua))   {     var vendor = window.navigator.vendor.toLowerCase();     if(vendor == "firefox"this.navigator = "firefox";     else if(vendor == "netscape"this.navigator = "netscape";     else if(vendor == ""this.navigator = "mozilla";   }   else this.navigator = "msie";   if(window.opera) this.wordLine = false; }; //给 TreeView 树加上样式设置 MzTreeView.prototype.setStyle = function() {   /*     width: 16px; /     height: 16px; /     width: 20px; /     height: 20px; /   */   var style = "<style>"+   "DIV.MzTreeView DIV IMG{border: 0px solid #FFFFFF;}"+   "DIV.MzTreeView DIV SPAN IMG{border: 0px solid #FFFFFF;}";   if(this.wordLine)   {     style +="/     DIV.MzTreeView DIV/     {/       height: 20px;"+       (this.navigator=="firefox" ? "line-height: 20px;" : "" ) +       (this.navigator=="netscape" ? "" : "overflow: hidden;" ) +"/     }/     DIV.MzTreeView DIV SPAN/     {/       vertical-align: middle; font-size: 21px; height: 20px; color: #D4D0C8; cursor: default;/     }/     DIV.MzTreeView DIV SPAN.pm/     {/       width: "+ (this.navigator=="msie"||this.navigator=="opera" ? "11" : "9"+"px;/       height: "+ (this.navigator=="netscape"?"9":(this.navigator=="firefox"?"10":"11")) +"px;/       font-size: 7pt;/       overflow: hidden;/       margin-left: -16px;/       margin-right: 5px;/       color: #000080; /       vertical-align: middle;/       border: 1px solid #D4D0C8;/       cursor: "+ (this.navigator=="msie" ? "hand" : "pointer"+";/       padding: 0 2px 0 2px;/       text-align: center;/       background-color: #F0F0F0;/     }";   }   style += "<//style>";   /*alert(document.getElementsByTagName("HEAD")[0].innerHTML);   if(document.body)   {     var head = document.getElementsByTagName("HEAD")[0];     head.innerHTML = head.innerHTML + style;   }   else */    document.write(style); }; //当根节点为空的时候做的处理 MzTreeView.prototype.atRootIsEmpty = function() {   var RCN = this.node["0"].childNodes;   for(var i=0; i<RCN.length; i++)   {     if(!RCN[i].isLoad) this.expand(RCN[i].id);     if (RCN[i].text=="")     {       var node = RCN[i].childNodes[0], HCN  = node.hasChild;       if(this.wordLine)       {         var span = this.getElementById(this.name +"_tree_"+ node.id);         span = span.childNodes[0].childNodes[0].childNodes[0];         span.innerHTML = RCN[i].childNodes.length>1 ? "" : "";       }       else       {         node.iconExpand  =  RCN[i].childNodes.length>1 ? HCN ? "PM0" : "L0" : HCN ? "PM3" : "L3"         this.getElementById(this.name +"_expand_"+ node.id).src = this.icons[node.iconExpand].src;       }     }   } }; //初始化数据源里的数据以便后面的快速检索 MzTreeView.prototype.dataFormat = function() {   var a = new Array();   for (var id in this.nodes) a[a.length] = id;   this.names = a.join(this._d + this._d);   this.totalNode = a.length; a = null; }; //在数据源检索所需的数据节点 //id  客户端节点对应的id MzTreeView.prototype.load = function(id) {   var node = this.node[id], d = this.divider, _d = this._d;   var sid = node.sourceIndex.substr(node.sourceIndex.indexOf(d) + d.length);   var reg = new RegExp("(^|"+_d+")"+ sid +d+"[^"+_d++"]+("+_d+"|$)""g");   var cns = this.names.match(reg), tcn = this.node[id].childNodes; if (cns){   reg = new RegExp(_d, "g"); for (var i=0; i<cns.length; i++)   tcn[tcn.length] = this.nodeInit(cns[i].replace(reg, ""), id); }   node.isLoad = true; }; //初始化节点信息, 根据 this.nodes 数据源生成节点的详细信息 //sourceIndex 数据源中的父子节点组合的字符串 0_1 //parentId    当前树节点在客户端的父节点的 id MzTreeView.prototype.nodeInit = function(sourceIndex, parentId) {   this.index++;   var source= this.nodes[sourceIndex], d = this.divider;   var text  = this.getAttribute(source, "text");   var hint  = this.getAttribute(source, "hint");   var sid   = sourceIndex.substr(sourceIndex.indexOf(d) + d.length);   this.node[this.index] =   {     "id"    : this.index,     "text"  : text,     "hint"  : hint ? hint : text,     "icon"  : this.getAttribute(source, "icon"),     "path"  : this.node[parentId].path + d + this.index,     "isLoad"false,     "isExpand"false,     "parentId": parentId,     "parentNode"this.node[parentId],     "sourceIndex" : sourceIndex,     "childAppend" : ""   };      this.nodes[sourceIndex] = "index:"+ this.index +";"+ source;      this.node[this.index].hasChild = this.names.indexOf(this._d + sid + d)>-1;   if(this.node[this.index].hasChild)  this.node[this.index].childNodes = [];   return this.node[this.index]; }; //从XML格式字符串里提取信息 //source 数据源里的节点信息字符串(以后可以扩展对XML的支持) //name   要提取的属性名 MzTreeView.prototype.getAttribute = function(source, name) {   var reg = new RegExp("(^|;|//s)"+ name +"//s*://s*([^;]*)(//s|;|$)""i");   if (reg.test(source)) return RegExp.$2.replace(/[/x0f]/g, ";"); return ""; }; //根据节点的详细信息生成HTML //node   树在客户端的节点对象 //AtEnd  布尔值  当前要转换的这个节点是否为父节点的子节点集中的最后一项 MzTreeView.prototype.nodeToHTML = function(node, AtEnd) {   var source = this.nodes[node.sourceIndex];   var target = this.getAttribute(source, "target");   var data = this.getAttribute(source, "data");   var url  = this.getAttribute(source, "url");   if(!url) url = this.url;   if(data) url += (url.indexOf("?")==-1?"?":"&"+ data;   if(!target) target = this.target;   var id   = node.id;   var HCN  = node.hasChild, isRoot = node.parentId=="0";   if(isRoot && node.icon=="") node.icon = "root";   if(node.icon=="" || typeof(this.icons[node.icon])=="undefined")     node.icon = HCN ? "folder" : "file";   node.iconExpand  = AtEnd ? "" : "";   var HTML = "<DIV noWrap='True'><NOBR>";   if(!isRoot)   {     node.childAppend = node.parentNode.childAppend + (AtEnd ? " " : "");     if(this.wordLine)     {       HTML += "<SPAN>"+ node.parentNode.childAppend + (AtEnd ? "" : ""+"</SPAN>";       if(HCN) HTML += "<SPAN class='pm' id='"+ this.name +"_expand_"+ id +"'>+</SPAN>";     }     else     {       node.iconExpand  = HCN ? AtEnd ? "PM2" : "PM1" : AtEnd ? "L2" : "L1";       HTML += "<SPAN>"+ this.word2image(node.parentNode.childAppend) +"<IMG "+         "align='absmiddle' id='"+ this.name +"_expand_"+ id +""+         "src='"+ this.icons[node.iconExpand].src +"' style='cursor: "+ (!node.hasChild ? "":         (this.navigator=="msie"||this.navigator=="opera"? "hand" : "pointer")) +"'></SPAN>";     }   }   HTML += "<IMG "+     "align='absMiddle' "+     "id='"+ this.name +"_icon_"+ id +""+     "src='"+ this.icons[node.icon].src +"'><A "+     "class='MzTreeview' hideFocus "+     "id='"+ this.name +"_link_"+ id +""+     "href='"+ url +""+     "target='"+ target +""+     "title='"+ node.hint +""+     "onfocus=/""+ this.name +".focusLink('"+ id +"')/" "+     "onclick=/"return "+ this.name +".nodeClick('"+ id +"')/">"+ node.text +   "</A></NOBR></DIV>";   if(isRoot && node.text=="") HTML = "";   HTML = "/r/n<SPAN id='"+ this.name +"_tree_"+ id +"'>"+ HTML    HTML +="<SPAN style='DISPLAY: none'></SPAN></SPAN>";   return HTML; }; //在使用图片的时候对 node.childAppend 的转换 MzTreeView.prototype.word2image = function(word) {   var str = "";   for(var i=0; i<word.length; i++)   {     var img = "";     switch (word.charAt(i))     {       case "" : img = "L4"break;       case "" : img = "L2"break;       case " " : img = "empty"break;       case "" : img = "L1"break;       case "" : img = "L3"break;       case "" : img = "L0"break;     }     if(img!="")       str += "<IMG align='absMiddle' src='"+ this.icons[img].src +"' height='20'>";   }   return str; } //将某个节点下的所有子节点转化成详细的<HTML>元素表达 //id 树的客户端节点 id MzTreeView.prototype.buildNode = function(id) {   if(this.node[id].hasChild)   {     var tcn = this.node[id].childNodes, str = "";     for (var i=0; i<tcn.length; i++)       str += this.nodeToHTML(tcn[i], i==tcn.length-1);     var temp = this.getElementById(this.name +"_tree_"+ id).childNodes;     temp[temp.length-1].innerHTML = str;   } }; //聚集到客户端生成的某个节点上 //id  客户端树节点的id MzTreeView.prototype.focusClientNode      = function(id) {   if(!this.currentNode) this.currentNode=this.node["0"];   var a = this.getElementById(this.name +"_link_"+ id); if(a){ a.focus();   var link = this.getElementById(this.name +"_link_"+ this.currentNode.id);   if(link)with(link.style){color="";   backgroundColor="";}   with(a.style){color = this.colors.highLightText;   backgroundColor = this.colors.highLight;}   this.currentNode= this.node[id];} }; //焦点聚集到树里的节点链接时的处理 //id 客户端节点 id MzTreeView.prototype.focusLink= function(id) {   if(this.currentNode && this.currentNode.id==id) return;   this.focusClientNode(id); }; //点击展开树节点的对应方法 MzTreeView.prototype.expand   = function(id, sureExpand) {   var node  = this.node[id];   if (sureExpand && node.isExpand) return;   if (!node.hasChild) return;   var area  = this.getElementById(this.name +"_tree_"+ id);   if (area)   area = area.childNodes[area.childNodes.length-1];   if (area)   {     var icon  = this.icons[node.icon];     var iconE = this.iconsExpand[node.icon];     var Bool  = node.isExpand = sureExpand || area.style.display == "none";     var img   = this.getElementById(this.name +"_icon_"+ id);     if (img)  img.src = !Bool ? icon.src :typeof(iconE)=="undefined" ? icon.src : iconE.src;     var exp   = this.icons[node.iconExpand];     var expE  = this.iconsExpand[node.iconExpand];     var expand= this.getElementById(this.name +"_expand_"+ id);     if (expand)     {       if(this.wordLine) expand.innerHTML = !Bool ? "+"  : "-";       else expand.src = !Bool ? exp.src : typeof(expE) =="undefined" ? exp.src  : expE.src;     }     if(!Bool && this.currentNode.path.indexOf(node.path)==0 && this.currentNode.id!=id)     {       try{this.getElementById(this.name +"_link_"+ id).click();}       catch(e){this.focusClientNode(id);}     }     area.style.display = !Bool ? "none" : "block";//(this.navigator=="netscape" ? "block" : "");     if(!node.isLoad)     {       this.load(id);       if(node.id=="0"return;       //当子节点过多时, 给用户一个正在加载的提示语句       if(node.hasChild && node.childNodes.length>200)       {         setTimeout(this.name +".buildNode('"+ id +"')"1);         var temp = this.getElementById(this.name +"_tree_"+ id).childNodes;         temp[temp.length-1].innerHTML = "<DIV noWrap><NOBR><SPAN>"+ (this.wordLine ?         node.childAppend +"" : this.word2image(node.childAppend +"")) +"</SPAN>"+         "<IMG border='0' height='16' align='absmiddle' src='"+this.icons["file"].src+"'>"+         "<A style='background-Color: "+ this.colors.highLight +"; color: "+         this.colors.highLightText +"; font-size: 9pt'>请稍候</A></NOBR></DIV>";       }       else this.buildNode(id);     }   } }; //节点链接单击事件处理方法 //id 客户端树节点的 id MzTreeView.prototype.nodeClick = function(id) {   var source = this.nodes[this.node[id].sourceIndex];   eval(this.getAttribute(source, "method"));   return !(!this.getAttribute(source, "url"&& this.url=="#"); }; //为配合系统初始聚集某节点而写的函数, 得到某节点在数据源里的路径 //sourceId 数据源里的节点 id MzTreeView.prototype.getPath= function(sourceId) {   Array.prototype.indexOf = function(item)   {     for(var i=0; i<this.length; i++)     {       if(this[i]==item) return i;     }     return -1;   };   var _d = this._d, d = this.divider;   var A = new Array(), id=sourceId; A[0= id;   while(id!="0" && id!="")   {     var str = "(^|"+_d+")([^"+_d+d+"]+"+d+ id +")("+_d+"|$)";     if (new RegExp(str).test(this.names))     {       id = RegExp.$2.substring(0, RegExp.$2.indexOf(d));       if(A.indexOf(id)>-1break;       A[A.length] = id;     }     else break;   }   return A.reverse(); }; //在源代码里指定 MzTreeView 初始聚集到某个节点 //sourceId 节点在数据源里的 id MzTreeView.prototype.focus = function(sourceId, defer) {   if (!defer)   {     setTimeout(this.name +".focus('"+ sourceId +"', true)"100);     return;   }   var path = this.getPath(sourceId);   if(path[0]!="0")   {     alert("节点 "+ sourceId +" 没有正确的挂靠有效树节点上!/r/n"+       "节点 id 序列 = "+ path.join(this.divider));     return;   }   var root = this.node["0"], len = path.length;   for(var i=1; i<len; i++)   {     if(root.hasChild)     {       var sourceIndex= path[i-1+ this.divider + path[i];       for (var k=0; k<root.childNodes.length; k++)       {         if (root.childNodes[k].sourceIndex == sourceIndex)         {           root = root.childNodes[k];           if(i<len - 1this.expand(root.id, true);           else this.focusClientNode(root.id);           break;         }       }     }   } }; //树的单击事件处理函数 MzTreeView.prototype.clickHandle = function(e) {   e = window.event || e; e = e.srcElement || e.target;   //alert(e.tagName)   switch(e.tagName)   {     case "IMG" :       if(e.id)       {         if(e.id.indexOf(this.name +"_icon_")==0)           this.focusClientNode(e.id.substr(e.id.lastIndexOf("_"+ 1));         else if (e.id.indexOf(this.name +"_expand_")==0)           this.expand(e.id.substr(e.id.lastIndexOf("_"+ 1));       }       break;     case "A" :       if(e.id) this.focusClientNode(e.id.substr(e.id.lastIndexOf("_"+ 1));       break;     case "SPAN" :       if(e.className=="pm")         this.expand(e.id.substr(e.id.lastIndexOf("_"+ 1));       break;     default :       if(this.navigator=="netscape") e = e.parentNode;       if(e.tagName=="SPAN" && e.className=="pm")         this.expand(e.id.substr(e.id.lastIndexOf("_"+ 1));       break;   } }; //MzTreeView 双击事件的处理函数 MzTreeView.prototype.dblClickHandle = function(e) {   e = window.event || e; e = e.srcElement || e.target;   if((e.tagName=="A" || e.tagName=="IMG")&& e.id)   {     var id = e.id.substr(e.id.lastIndexOf("_"+ 1);     if(this.node[id].hasChild) this.expand(id);   } }; //回到树当前节点的父层节点 MzTreeView.prototype.upperNode = function() {   if(!this.currentNode) return;   if(this.currentNode.id=="0" || this.currentNode.parentId=="0"return;   if (this.currentNode.hasChild && this.currentNode.isExpand)     this.expand(this.currentNode.id, false);   else this.focusClientNode(this.currentNode.parentId); }; //展开当前节点并 MzTreeView.prototype.lowerNode = function() {   if (!this.currentNode) this.currentNode = this.node["0"];   if (this.currentNode.hasChild)   {     if (this.currentNode.isExpand)       this.focusClientNode(this.currentNode.childNodes[0].id);     else this.expand(this.currentNode.id, true);   } } //聚集到树当前节点的上一节点 MzTreeView.prototype.pervNode = function() {   if(!this.currentNode) returnvar e = this.currentNode;   if(e.id=="0"returnvar a = this.node[e.parentId].childNodes;   for(var i=0; i<a.length; i++){if(a[i].id==e.id){if(i>0){e=a[i-1];   while(e.hasChild){this.expand(e.id, true);   e = e.childNodes[e.childNodes.length - 1];}   this.focusClientNode(e.id); return;} else {   this.focusClientNode(e.parentId); return;}}} }; //聚集到树当前节点的下一节点 MzTreeView.prototype.nextNode = function() {   var e = this.currentNode; if(!e) e = this.node["0"];   if (e.hasChild){this.expand(e.id, true);   this.focusClientNode(e.childNodes[0].id); return;}   while(typeof(e.parentId)!="undefined"){   var a = this.node[e.parentId].childNodes;   for(var i=0; i<a.length; i++){ if(a[i].id==e.id){   if(i<a.length-1){this.focusClientNode(a[i+1].id); return;}   else e = this.node[e.parentId];}}} }; //展开树的所有节点 MzTreeView.prototype.expandAll = function() {   if(this.totalNode>500if(     confirm("您是否要停止展开全部节点?/r/n/r/n节点过多!展开很耗时")) return;   if(this.node["0"].childNodes.length==0return;   var e = this.node["0"].childNodes[0];   var isdo = t = false;   while(e.id != "0")   {     var p = this.node[e.parentId].childNodes, pn = p.length;     if(p[pn-1].id==e.id && (isdo || !e.hasChild)){e=this.node[e.parentId]; isdo = true;}     else     {       if(e.hasChild && !isdo)       {         this.expand(e.id, true), t = false;         for(var i=0; i<e.childNodes.length; i++)         {           if(e.childNodes[i].hasChild){e = e.childNodes[i]; t = truebreak;}         }         if(!t) isdo = true;       }       else       {         isdo = false;         for(var i=0; i<pn; i++)         {           if(p[i].id==e.id) {e = p[i+1]; break;}         }       }     }   } }; //本树将要用动的图片的字义及预载函数 //path 图片存放的路径名 MzTreeView.prototype.setIconPath  = function(path) {   var k = 0, d = new Date().getTime();   for(var i in this.icons)   {     var tmp = this.icons[i];     this.icons[i] = new Image();     this.icons[i].src = path + tmp;     if(k==9 && (new Date().getTime()-d)>20)       this.wordLine = true; k++;   }   for(var i in this.iconsExpand)   {     var tmp = this.iconsExpand[i];     this.iconsExpand[i]=new Image();     this.iconsExpand[i].src = path + tmp;   } }; //设置树的默认链接 //url 默认链接  若不设置, 其初始值为 # MzTreeView.prototype.setURL     = function(url){this.url = url;}; //设置树的默认的目标框架名 target //target 目标框架名  若不设置, 其初始值为 _self MzTreeView.prototype.setTarget  = function(target){this.target = target;}; // --> </script> <style>  BODY, DIV { SCROLLBAR-HIGHLIGHT-COLOR: #FFFFFF; SCROLLBAR-SHADOW-COLOR: #E1E1E1; SCROLLBAR-3DLIGHT-COLOR: #E1E1E1; SCROLLBAR-TRACK-COLOR: #EEEEEE; SCROLLBAR-DARKSHADOW-COLOR:#FFFFFF; SCROLLBAR-BASE-COLOR: #FFFFFF; SCROLLBAR-ARROW-COLOR: #35507A; SCROLLBAR-FACE-COLOR: #FFFFFF; margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;font-size:12px;} .MzTreeview,a.MzTreeview:link,a.MzTreeview:visited{color:#0000FF;} a.MzTreeview:hover{color:#bc2931;} </style>     <style>     A.MzTreeview     {       font-size: 9pt;       padding-left: 3px;     }     </style>   </head>   <body class=frame>     <SCRIPT LANGUAGE="JavaScript">     <!--     var tree = new MzTreeView("tree"); //    window.tree = new MzTreeView("tree"); //    tree.icons["property"] = "property.gif"; //    tree.icons["css"] = "collection.gif"; //    tree.icons["book"]  = "book.gif"; //    tree.iconsExpand["book"] = "bookopen.gif"; //展开时对应的图片 //    tree.setIconPath("http://www.meizz.com/Icons/TreeView/"); //可用相对路径          tree.icons["folder"= "blank.gif";     tree.iconsExpand["folder"= "blank.gif";     tree.icons["file"= "i3.gif";     tree.setIconPath("/images/tree/"); <%   Dim node   Dim reg : set reg = new RegExp : reg.global=True : reg.pattern=";"   Dim id, parentId, text, hint, icon, data, url, target, method   do while not rs.eof     '若是树的条目比较多的时候(比如大于1000)而又相对稳定的时候将这些数据生成静态网页来访问     node = VBCrLf &"    tree.nodes["""& rs("parentId"&"_"& rs("classid"&"""] = """     node = node &"text:"& reg.replace(rs("classcname"), chr(15)) &";"     if rs("classtemp")<>"" then node = node &"hint:"& reg.replace(rs("classtemp"), chr(15)) &";"     'if rs("icon")<>"" then node = node &"icon:"& rs("icon"&";"     'if rs("data")<>"" then node = node &"data:"& reg.replace(rs("data"), chr(15)) &";"     if rs("classtemp")<>""  then node = node &"url:"&  reg.replace(rs("classtemp"), chr(15)) &";"     'if rs("target")<>"" then node = node &"target:"& rs("target"&";"     'if rs("method")<>"" then node = node &"method:"& reg.replace(rs("method"), chr(15)) &";"     response.write node &"""" '生成节点信息     rs.movenext   loop %>     tree.setURL("Catalog.asp");     tree.setTarget("MzMain");     document.write(tree.toString());    //亦可用 obj.innerHTML = tree.toString();     //-->     </SCRIPT>   </body> </html> <%   rs.close : set rs = nothing : Conn.close : set Conn = nothing %>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值