tree.js
上传用户:autodoor
上传日期:2022-08-04
资源大小:9973k
文件大小:7k
源码类别:

.net编程

开发平台:

Others

  1. // 创建节点的辅助函数
  2. function folderNode(id,nodeSta,folderSta,name,link,path,subFolder)
  3. {
  4. var arrayAux;
  5. arrayAux = new Array;
  6. arrayAux[0] = id;
  7. arrayAux[1] = nodeSta;
  8. arrayAux[2] = folderSta;
  9. arrayAux[3] = name;
  10. arrayAux[4] = link; 
  11.     arrayAux[5] = path;
  12.     arrayAux[6] = subFolder;
  13.     
  14.     return arrayAux;
  15. }
  16. // 追加foldersTree数组
  17. function appendChild(parent, child)
  18. {
  19. parent[parent.length] = child;
  20. return child;
  21. }
  22. //刷新树状菜单
  23. function redrawTree()
  24. {
  25. var doc = frames(0).window.document;
  26. doc.clear();
  27. doc.writeln("<html><head><meta http-equiv='Content-Type' content='text/html' charset='utf-8'>");
  28. doc.writeln("<link rel='stylesheet' href='../default.css' type='text/css'></head>");
  29. doc.writeln("<body bgcolor='#F7F7F7' text='#000099' link='#000099' vlink='#000099' alink='#FF3300' leftmargin='0' rightmargin='5' marginheight='0'>");
  30.     doc.writeln("<form name='MyForm' method='Post'>");
  31. doc.writeln("<table width='100%' border='0' cellspacing='0' cellpadding='0' height='100%'  style='background: url(../Images/pageHeaderBG_File.gif) no-repeat fixed left top'><tr><td height='100'>&nbsp;</td></tr><tr><td>");
  32. doc.writeln("<div style='position:absolute; left:5px; top:85px; width:100%; height:100%; overflow: auto'>");
  33. redrawNode(foldersTree, doc, 0, 1, "");
  34. doc.writeln("</td></tr></table>");
  35. doc.writeln("</div>");
  36.     doc.writeln("</form>");  
  37. doc.writeln("</body>");
  38. doc.writeln("<html>");
  39. doc.close();
  40. }
  41. // 重画树中的节点
  42. function redrawNode(foldersNode, doc, level, lastNode, leftSide)
  43. {
  44. var j=0;
  45. var i=0;
  46. doc.writeln("<table border=0 cellspacing=0 cellpadding=0>");
  47. doc.writeln("<tr><td valign = middle nowrap>");
  48. doc.write(leftSide);
  49. if (level > 0)
  50. {
  51. if (foldersNode.length > 7 && foldersNode[1]) //有更低层的节点和文件夹展开着
  52. {
  53. if (lastNode) //'brother'子节点数组中有否兄弟节点
  54. {
  55. doc.write("<A href='javascript:parent.openBranch("" + foldersNode[0] + "")'>");
  56. doc.write("<img src='images/lastMinus.gif' width=20 height=22 border=noborder></a>");
  57. leftSide = leftSide + "<img src='images/blank.gif' width=20 height=22>" ;
  58. }
  59. else
  60. {
  61. doc.write("<A href='javascript:parent.openBranch("" + foldersNode[0] + "")'>");
  62. doc.write("<img src='images/minusNode.gif' width=20 height=22 border=noborder></a>");
  63. leftSide = leftSide + "<img src='images/vertline.gif' width=20 height=22>";
  64. }
  65. }
  66. else if (foldersNode.length > 7 && !foldersNode[1])
  67. {
  68. if (lastNode) //'brother'子节点数组中有否兄弟节点
  69. {
  70. doc.write("<A href='javascript:parent.openBranch("" + foldersNode[0] + "")'>");
  71. doc.write("<img src='images/lastPlus.gif' width=20 height=22 border=noborder></a>");
  72. leftSide = leftSide + "<img src='images/blank.gif' width=20 height=22>" ;
  73. }
  74. else
  75. {
  76. doc.write("<A href='javascript:parent.openBranch("" + foldersNode[0] + "")'>");
  77. doc.write("<img src='images/plusNode.gif' width=20 height=22 border=noborder></a>");
  78. leftSide = leftSide + "<img src='images/vertline.gif' width=20 height=22>";
  79. }
  80. }
  81. else
  82. {
  83. if (lastNode) //'brother'子节点数组中有否兄弟节点
  84. {
  85. doc.write("<img src='images/lastnode.gif' width=20 height=22>");
  86. leftSide = leftSide + "<img src='images/blank.gif' width=20 height=22>" ;
  87. }
  88. else
  89. {
  90. doc.write("<img src='images/node.gif' width=20 height=22>");
  91. leftSide = leftSide + "<img src='images/vertline.gif' width=20 height=22>";
  92. }
  93. }
  94. }
  95. if (level == 0)  //如果是根目录
  96. {
  97. //doc.write("<a href='javascript:parent.openFolder("" + foldersNode[0] + "","" + foldersNode[4] + "")'>");
  98. doc.write("<img src=images/mainIcon.gif width=24 height=22 border=noborder></a>");
  99. doc.write("<td valign=middle align=left nowrap>");
  100. //doc.write("<a href='javascript:parent.openFolder("" + foldersNode[0] + "","" + foldersNode[4] + "")'>");
  101. doc.write("<font style='font-size:9pt;font-family:宋体'>"+foldersNode[3]+"</a></font>");
  102. doc.writeln("</table>");
  103. }
  104. else
  105. {
  106. displayIconAndLabel(foldersNode, doc);
  107. doc.writeln("</table>");
  108. }
  109. if (foldersNode.length > 7 && foldersNode[1]) //有更低层的节点和文件夹展开着
  110. {
  111. level=level+1;
  112. for (i=7; i<foldersNode.length;i++)
  113. if (i==foldersNode.length-1)
  114. redrawNode(foldersNode[i], doc, level, 1, leftSide);
  115. else
  116. redrawNode(foldersNode[i], doc, level, 0, leftSide);
  117. }
  118. }
  119. //显示文件夹图标和名称标签
  120. function displayIconAndLabel(foldersNode, doc)
  121. {
  122. doc.write("<A href='javascript:parent.openFolder("" + foldersNode[0] + "","" + foldersNode[4] + "")'><img src=images/");
  123. if (foldersNode[2])
  124. doc.write("openfolder.gif width=24 height=22 border=noborder></a>");
  125. else
  126. doc.write("closedfolder.gif width=24 height=22 border=noborder></a>");
  127. doc.write("<td valign=middle align=left nowrap>");
  128. doc.write("<a href='javascript:parent.openFolder("" + foldersNode[0] + "","" + foldersNode[4] + "")'>");
  129. doc.write("<font style='font-size:9pt;font-family:宋体'>"+foldersNode[3]+"</a></font>");
  130.     doc.write("<input type='hidden' name='hidPath"+foldersNode[0]+"' value='"+foldersNode[5]+"'>");
  131.     doc.write("<input type='hidden' name='hidSubFolder"+foldersNode[0]+"' value='"+foldersNode[6]+"'>");
  132. }
  133. //当父节点关闭,其所有的子节点也都闭合
  134. function closeBranch(foldersNode)
  135. {
  136. var i=0;
  137.     for (i=7; i< foldersNode.length; i++)
  138.         closeBranch(foldersNode[i]);
  139.   foldersNode[1] = 0;
  140. foldersNode[2] = 0;
  141. if (foldersNode[0] == lastopenfolder)
  142. {
  143. isopen = 1;
  144. }
  145. }
  146. //收拢节点
  147. function clickOnBranch(foldersNode, folderID)
  148. {
  149. var i=0;
  150.     if (foldersNode[0] == folderID)
  151. {
  152. if (foldersNode[1])
  153. {
  154. closeBranch(foldersNode);
  155. if (isopen == 1)
  156. {
  157. isopen = 0;
  158. openFolder(foldersNode[0],foldersNode[4]);
  159. }
  160. }
  161. else
  162. {
  163. foldersNode[1] = 1;
  164. }
  165. }
  166. else
  167. {
  168.     for (i=7; i< foldersNode.length; i++)
  169.         clickOnBranch(foldersNode[i], folderID);
  170. }
  171. }
  172. //收拢文件夹
  173. function clickOnFolder(foldersNode, folderID)
  174. {
  175. var i=0;
  176. foldersNode[2] = 0;
  177. if (foldersNode[0] == folderID)
  178. {
  179. foldersNode[2] = 1;
  180. }
  181. for (i=7; i< foldersNode.length; i++)
  182. {
  183.   clickOnFolder(foldersNode[i], folderID);
  184.   }
  185. }
  186. //打开分支
  187. function openBranch(branchID)
  188. {
  189. clickOnBranch(foldersTree, branchID);
  190. if (branchID=="Start folder" && foldersTree[1]==0)
  191. frames(1).location="basefolder.htm"
  192. timeOutId = setTimeout("redrawTree()",100);
  193. }
  194. //打开文件夹
  195. function openFolder(branchID,linkfilename)
  196. {
  197. lastopenfolder = branchID;
  198. clickOnFolder(foldersTree, branchID);    
  199. frames(1).location = linkfilename;
  200. if (branchID=="Start folder" && foldersTree[1]==0)
  201. frames(1).location="basefolder.htm"
  202. timeOutId = setTimeout("redrawTree()",100);
  203. }
  204. //页面载入时的初始化
  205. function initializeTree()
  206. {
  207. generateTree();
  208. redrawTree();
  209. }