zoukankan      html  css  js  c++  java
  • dTree的分析和二次开发(上)

    dTree是一个免费的JavaScript树形菜单,使用简单,界面制作的也很专业。

    dtree树形菜单

    dtree树形菜单

    所谓“兵无常势,水无常形”,不同的项目需求,造成菜单树的各种变化,因此在介绍dTree的同时,本文着重讲述如何改造dTree,以达到为不同项目所用的目的。

    dTree 分析

    dTree的使用非常简单,在下载的dTree压缩文件中(2.05),要用的只有三个:

    1. dtree.js : dtree功能脚本
    2. dtree.css : 样式文件
    3. img文件夹 : 存放dtree使用的图标,参看下图:

    dtree图标

    dtree图标

    很容易就可以编写出类似上面的dtree菜单树,源代码如下:

    1. <html>
    2. <head>
    3. <link rel="StyleSheet" href="dtree.css" type="text/css" />
    4. <script type="text/javascript" src="dtree.js"></script>
    5. </head>
    6. <body>
    7. <script type="text/javascript">
    8. <!–
    9. d = new dTree(‘d’); //创建树,名称为’d'(注意和树的对象变量名称要一致)
    10. d.add(0,-1,‘My example tree’); //在树中增加节点。节点id是0,父节点是-1(根节点),节点文字’My example tree’
    11. d.add(1,0,‘Node 1′,‘default.html’); //根节点的子节点(父节点是0),’default.html’表示节点链接(鼠标点击页面跳转url)
    12. d.add(2,0,‘Node 2′,‘default.html’);
    13. d.add(3,1,‘Node 1.1′,‘default.html’);
    14. d.add(4,0,‘Node 3′,‘default.html’);
    15. d.add(5,3,‘Node 1.1.1′,‘default.html’);
    16. d.add(6,5,‘Node 1.1.1.1′,‘default.html’);
    17. d.add(7,0,‘Node 4′,‘default.html’);
    18. d.add(8,1,‘Node 1.2′,‘default.html’);
    19. d.add(9,0,‘My Pictures’,‘default.html’,‘Pictures I\’ve taken over the years’,,,‘img/imgfolder.gif’);//’Pictures I\’ve taken over the years’是链接title,指定图标
    20. d.add(10,9,‘The trip to Iceland’,‘default.html’,‘Pictures of Gullfoss and Geysir’);
    21. d.add(11,9,‘Mom\’s birthday’,‘default.html’);
    22. d.add(12,0,‘Recycle Bin’,‘default.html’,,,‘img/trash.gif’);
    23. document.write(d); //输出dtree的html(显示)
    24. //–>
    25. </script>
    26. </body>
    27. </html>

    分析dtree.js,在dTree中只有两个结构:”节点”和”树”,dTree的所有功能和构造都在于这两个结构的属性和行为中,Node比较简单,只包含节点的基本属性和一个构造方法,所以对dTree的分析和研究的重点可放在dTree结构中。

    Node
    Attributes(属性)
    Operations(行为)

    节点类图

    dTree
    Attributes(属性)
    Operations(行为)

    树类图

    提示:
    鼠标移动到类图中的属性或方法上时,会显示详细信息。

    dTree的工作原理

    类似dTree这样的动态的客户端web插件,实现起来基本离不开xhtml和javascript,用一段简单的代码来探索一下dTree的工作原理:

    1. <html>
    2. <head>
    3. <link rel="StyleSheet" href="dtree.css" type="text/css" />
    4. <script type="text/javascript" src="dtree.js"></script>
    5. </head>
    6. <body>
    7. <script type="text/javascript">
    8. <!--
    9. d = new dTree('d'); //创建树,名称为'd'
    10. d.add(0,-1,'根节点');
    11. d.add(1,0,'节点 1','node1.html');
    12. d.add(2,0,'节点 2','node2.html');
    13. d.add(3,1,'节点 1.1','node1_1.html');
    14. d.add(4,3,'节点 1.1.1','node1_1_1.html');
    15. document.write(d);
    16.  
    17. function show()
    18. {
    19.     alert(d);
    20. }
    21. //-->
    22. </script>
    23.  
    24. <input type="button" value="显示html" onclick="show()">
    25. </body>
    26. </html>

    显示的“树”如下图:

    dtree02

    点击下方的“显示html”按钮,会在alert对话框中显示整个树的html代码,整理后如下:

    1. <div class="dtree">
    2.     <div class="dTreeNode">
    3.         <img id="id0" src="img/base.gif" alt="" />根节点</a>
    4.     </div>
    5.     <div id="dd0" class="clip" style="display:block;">
    6.         <div class="dTreeNode">
    7.             <a href="javascript: d.o(1);"><img id="jd1" src="img/minus.gif" alt="" /></a>
    8.             <img id="id1" src="img/folderopen.gif" alt="" />
    9.             <a href="javascript: d.o(1);" class="node">节点 1</a>
    10.         </div>
    11.         <div id="dd1" class="clip" style="display:block;">
    12.             <div class="dTreeNode">
    13.                 <img src="img/line.gif" alt="" />
    14.                 <a href="javascript: d.o(3);"><img id="jd3" src="img/minusbottom.gif" alt="" /></a>
    15.                 <img id="id3" src="img/folderopen.gif" alt="" />
    16.                 <a href="javascript: d.o(3);" class="node">节点 1.1</a>
    17.             </div>
    18.             <div id="dd3" class="clip" style="display:block;">
    19.                 <div class="dTreeNode">
    20.                     <img src="img/line.gif" alt="" />
    21.                     <img src="img/empty.gif" alt="" />
    22.                     <img src="img/joinbottom.gif" alt="" />
    23.                     <img id="id4" src="img/page.gif" alt="" />
    24.                     <a id="sd4" class="node" href="node1_1_1.html" onclick="javascript: d.s(4);">节点 1.1.1</a>
    25.                 </div>
    26.             </div>
    27.         </div>
    28.         <div class="dTreeNode">
    29.             <img src="img/joinbottom.gif" alt="" />
    30.             <img id="id2" src="img/page.gif" alt="" />
    31.             <a id="sd2" class="node" href="node2.html" onclick="javascript: d.s(2);">节点 2</a>
    32.         </div>
    33.     </div>
    34. </div>

    仔细观察,树中每个节点的html构造是相似的:

    1. <!-- 根节点 -->
    2. <div class="dTreeNode">
    3.     <img id="id0" src="img/base.gif" alt="" />根节点</a>
    4. </div>
    5. <div id="dd0" class="clip" style="display:block;">
    6.     ......
    7. </div>
    1. <!-- 节点 1 -->
    2. <div class="dTreeNode">
    3.     <a href="javascript: d.o(1);"><img id="jd1" src="img/minus.gif" alt="" /></a>
    4.     <img id="id1" src="img/folderopen.gif" alt="" />
    5.     <a href="javascript: d.o(1);" class="node">节点 1</a>
    6. </div>
    7. <div id="dd1" class="clip" style="display:block;">
    8.     ......
    9. </div>
    1. <!-- 节点 1.1 -->
    2. <div class="dTreeNode">
    3.     <img src="img/line.gif" alt="" />
    4.     <a href="javascript: d.o(3);"><img id="jd3" src="img/minusbottom.gif" alt="" /></a>
    5.     <img id="id3" src="img/folderopen.gif" alt="" />
    6.     <a href="javascript: d.o(3);" class="node">节点 1.1</a>
    7. </div>
    8. <div id="dd3" class="clip" style="display:block;">
    9.     ......
    10. </div>
    1. <!-- 节点 1.1.1 -->
    2. <div class="dTreeNode">
    3.     <img src="img/line.gif" alt="" />
    4.     <img src="img/empty.gif" alt="" />
    5.     <img src="img/joinbottom.gif" alt="" />
    6.     <img id="id4" src="img/page.gif" alt="" />
    7.     <a id="sd4" class="node" href="node1_1_1.html" onclick="javascript: d.s(4);">节点 1.1.1</a>
    8. </div>
    1. <!-- 节点 2 -->
    2. <div class="dTreeNode">
    3.     <img src="img/joinbottom.gif" alt="" />

      dTree是一个免费的JavaScript树形菜单,使用简单,界面制作的也很专业。

      dtree树形菜单

      dtree树形菜单

      所谓“兵无常势,水无常形”,不同的项目需求,造成菜单树的各种变化,因此在介绍dTree的同时,本文着重讲述如何改造dTree,以达到为不同项目所用的目的。

      dTree 分析

      dTree的使用非常简单,在下载的dTree压缩文件中(2.05),要用的只有三个:

      1. dtree.js : dtree功能脚本
      2. dtree.css : 样式文件
      3. img文件夹 : 存放dtree使用的图标,参看下图:

      dtree图标

      dtree图标

      很容易就可以编写出类似上面的dtree菜单树,源代码如下:

      1. <html>
      2. <head>
      3. <link rel="StyleSheet" href="dtree.css" type="text/css" />
      4. <script type="text/javascript" src="dtree.js"></script>
      5. </head>
      6. <body>
      7. <script type="text/javascript">
      8. <!–
      9. d = new dTree(‘d’); //创建树,名称为’d'(注意和树的对象变量名称要一致)
      10. d.add(0,-1,‘My example tree’); //在树中增加节点。节点id是0,父节点是-1(根节点),节点文字’My example tree’
      11. d.add(1,0,‘Node 1′,‘default.html’); //根节点的子节点(父节点是0),’default.html’表示节点链接(鼠标点击页面跳转url)
      12. d.add(2,0,‘Node 2′,‘default.html’);
      13. d.add(3,1,‘Node 1.1′,‘default.html’);
      14. d.add(4,0,‘Node 3′,‘default.html’);
      15. d.add(5,3,‘Node 1.1.1′,‘default.html’);
      16. d.add(6,5,‘Node 1.1.1.1′,‘default.html’);
      17. d.add(7,0,‘Node 4′,‘default.html’);
      18. d.add(8,1,‘Node 1.2′,‘default.html’);
      19. d.add(9,0,‘My Pictures’,‘default.html’,‘Pictures I\’ve taken over the years’,,,‘img/imgfolder.gif’);//’Pictures I\’ve taken over the years’是链接title,指定图标
      20. d.add(10,9,‘The trip to Iceland’,‘default.html’,‘Pictures of Gullfoss and Geysir’);
      21. d.add(11,9,‘Mom\’s birthday’,‘default.html’);
      22. d.add(12,0,‘Recycle Bin’,‘default.html’,,,‘img/trash.gif’);
      23. document.write(d); //输出dtree的html(显示)
      24. //–>
      25. </script>
      26. </body>
      27. </html>

      分析dtree.js,在dTree中只有两个结构:”节点”和”树”,dTree的所有功能和构造都在于这两个结构的属性和行为中,Node比较简单,只包含节点的基本属性和一个构造方法,所以对dTree的分析和研究的重点可放在dTree结构中。

      Node
      Attributes(属性)
      Operations(行为)

      节点类图

      dTree
      Attributes(属性)
      Operations(行为)

      树类图

      提示:
      鼠标移动到类图中的属性或方法上时,会显示详细信息。

      dTree的工作原理

      类似dTree这样的动态的客户端web插件,实现起来基本离不开xhtml和javascript,用一段简单的代码来探索一下dTree的工作原理:

      1. <html>
      2. <head>
      3. <link rel="StyleSheet" href="dtree.css" type="text/css" />
      4. <script type="text/javascript" src="dtree.js"></script>
      5. </head>
      6. <body>
      7. <script type="text/javascript">
      8. <!--
      9. d = new dTree('d'); //创建树,名称为'd'
      10. d.add(0,-1,'根节点');
      11. d.add(1,0,'节点 1','node1.html');
      12. d.add(2,0,'节点 2','node2.html');
      13. d.add(3,1,'节点 1.1','node1_1.html');
      14. d.add(4,3,'节点 1.1.1','node1_1_1.html');
      15. document.write(d);
      16.  
      17. function show()
      18. {
      19.     alert(d);
      20. }
      21. //-->
      22. </script>
      23.  
      24. <input type="button" value="显示html" onclick="show()">
      25. </body>
      26. </html>

      显示的“树”如下图:

      dtree02

      点击下方的“显示html”按钮,会在alert对话框中显示整个树的html代码,整理后如下:

      1. <div class="dtree">
      2.     <div class="dTreeNode">
      3.         <img id="id0" src="img/base.gif" alt="" />根节点</a>
      4.     </div>
      5.     <div id="dd0" class="clip" style="display:block;">
      6.         <div class="dTreeNode">
      7.             <a href="javascript: d.o(1);"><img id="jd1" src="img/minus.gif" alt="" /></a>
      8.             <img id="id1" src="img/folderopen.gif" alt="" />
      9.             <a href="javascript: d.o(1);" class="node">节点 1</a>
      10.         </div>
      11.         <div id="dd1" class="clip" style="display:block;">
      12.             <div class="dTreeNode">
      13.                 <img src="img/line.gif" alt="" />
      14.                 <a href="javascript: d.o(3);"><img id="jd3" src="img/minusbottom.gif" alt="" /></a>
      15.                 <img id="id3" src="img/folderopen.gif" alt="" />
      16.                 <a href="javascript: d.o(3);" class="node">节点 1.1</a>
      17.             </div>
      18.             <div id="dd3" class="clip" style="display:block;">
      19.                 <div class="dTreeNode">
      20.                     <img src="img/line.gif" alt="" />
      21.                     <img src="img/empty.gif" alt="" />
      22.                     <img src="img/joinbottom.gif" alt="" />
      23.                     <img id="id4" src="img/page.gif" alt="" />
      24.                     <a id="sd4" class="node" href="node1_1_1.html" onclick="javascript: d.s(4);">节点 1.1.1</a>
      25.                 </div>
      26.             </div>
      27.         </div>
      28.         <div class="dTreeNode">
      29.             <img src="img/joinbottom.gif" alt="" />
      30.             <img id="id2" src="img/page.gif" alt="" />
      31.             <a id="sd2" class="node" href="node2.html" onclick="javascript: d.s(2);">节点 2</a>
      32.         </div>
      33.     </div>
      34. </div>

      仔细观察,树中每个节点的html构造是相似的:

      1. <!-- 根节点 -->
      2. <div class="dTreeNode">
      3.     <img id="id0" src="img/base.gif" alt="" />根节点</a>
      4. </div>
      5. <div id="dd0" class="clip" style="display:block;">
      6.     ......
      7. </div>
      1. <!-- 节点 1 -->
      2. <div class="dTreeNode">
      3.     <a href="javascript: d.o(1);"><img id="jd1" src="img/minus.gif" alt="" /></a>
      4.     <img id="id1" src="img/folderopen.gif" alt="" />
      5.     <a href="javascript: d.o(1);" class="node">节点 1</a>
      6. </div>
      7. <div id="dd1" class="clip" style="display:block;">
      8.     ......
      9. </div>
      1. <!-- 节点 1.1 -->
      2. <div class="dTreeNode">
      3.     <img src="img/line.gif" alt="" />
      4.     <a href="javascript: d.o(3);"><img id="jd3" src="img/minusbottom.gif" alt="" /></a>
      5.     <img id="id3" src="img/folderopen.gif" alt="" />
      6.     <a href="javascript: d.o(3);" class="node">节点 1.1</a>
      7. </div>
      8. <div id="dd3" class="clip" style="display:block;">
      9.     ......
      10. </div>
      1. <!-- 节点 1.1.1 -->
      2. <div class="dTreeNode">
      3.     <img src="img/line.gif" alt="" />
      4.     <img src="img/empty.gif" alt="" />
      5.     <img src="img/joinbottom.gif" alt="" />
      6.     <img id="id4" src="img/page.gif" alt="" />
      7.     <a id="sd4" class="node" href="node1_1_1.html" onclick="javascript: d.s(4);">节点 1.1.1</a>
      8. </div>
      1. <!-- 节点 2 -->
      2. <div class="dTreeNode">
      3.     <img src="img/joinbottom.gif" alt="" />
      4.     <img id="id2" src="img/page.gif" alt="" />
      5.     <a id="sd2" class="node" href="node2.html" onclick="javascript: d.s(2);">节点 2</a>
      6. </div>

      每个节点由两个<div>组成,第一个div (class="dTreeNode")描述当前节点,如节点显示文字、节点图标、图标前的加减号、连线等;第二个div (class="clip")描述当前节点的子节点(包括子节点的子节点),注意div的样式 style="display:block;","block"表示显示div,也就是显示子节点,如果样式为 style="display:none;",则隐藏div,也就隐藏了子节点,d.o()函数控制display样式的变换,也就相应实现了子节点的打开和关闭。

      "节点 1.1.1" 和 "节点 2" 没有子节点,所以没有第二个<div>。

    4.     <img id="id2" src="img/page.gif" alt="" />
    5.     <a id="sd2" class="node" href="node2.html" onclick="javascript: d.s(2);">节点 2</a>
    6. </div>

    每个节点由两个<div>组成,第一个div (class="dTreeNode")描述当前节点,如节点显示文字、节点图标、图标前的加减号、连线等;第二个div (class="clip")描述当前节点的子节点(包括子节点的子节点),注意div的样式 style="display:block;","block"表示显示div,也就是显示子节点,如果样式为 style="display:none;",则隐藏div,也就隐藏了子节点,d.o()函数控制display样式的变换,也就相应实现了子节点的打开和关闭。

    "节点 1.1.1" 和 "节点 2" 没有子节点,所以没有第二个<div>。

  • 相关阅读:
    第01篇 说一下Setting,我一直没有讲过
    簡單委託介紹
    委託和事件
    wcf
    網站和項目的發佈問題
    jquery和js使用技巧
    js中String.prototype.format類似于.net中的string.formitz效果
    [剑指Offer] 6.旋转数组的最小数字(二分法)
    [剑指Offer] 5.用两个栈实现队列
    [剑指Offer] 4.重建二叉树
  • 原文地址:https://www.cnblogs.com/sishahu/p/2029395.html
Copyright © 2011-2022 走看看