简单的可拖拉的Tree

 
  1. <html xmlns:ie>
  2. <head>
  3. <!-- TOOLBAR_START -->
  4. <!-- TOOLBAR_EXEMPT -->
  5. <!-- TOOLBAR_END --> 
  6. <style> 
  7.     ie/:tree {display: block;}
  8.     ie/:treeitem {font-weight: expression(this.children.length > 1 ? 'bold' : 'normal'); border-top: 2px solid white;display: block; margin-left: 20px; visibility: inherit; overflow: hidden; width: 100%}
  9.     ie/:label {display: inline; cursor: hand}
  10.   </style>    
  11. </head>
  12. <body style="font-family: verdana; font-size: 12px">
  13. <h3>可以拖动的tree</h3>
  14. <ie:tree id=TheTree>
  15.   <ie:treeitem><ie:label id=Label1>1.0 First Set</ie:label> 
  16.      <ie:treeitem><ie:label>1.1 Megalosaurus</ie:label></ie:treeitem> 
  17.      <ie:treeitem><ie:label>1.2 Iguanodon</ie:label></ie:treeitem> 
  18.      <ie:treeitem><ie:label>1.3 Hylaeosaurus</ie:label></ie:treeitem> 
  19.      <ie:treeitem><ie:label>1.4 Tyrannosaurus rex</ie:label></ie:treeitem> 
  20.   </ie:treeitem> 
  21.   <ie:treeitem><ie:label>2.0 Later Set</ie:label> 
  22.      <ie:treeitem><ie:label>2.1 Mammoths</ie:label></ie:treeitem> 
  23.      <ie:treeitem><ie:label>2.2 Mastodons</ie:label> 
  24.        <ie:treeitem><ie:label>2.2.1 Plesiosaurs</ie:label></ie:treeitem> 
  25.        <ie:treeitem><ie:label>2.2.2 Ichthyosaurs</ie:label></ie:treeitem> 
  26.        <ie:treeitem><ie:label>2.2.3 Dimetrodon </ie:label></ie:treeitem> 
  27.        <ie:treeitem><ie:label>2.2.4 Sinapsid</ie:label></ie:treeitem> 
  28.      </ie:treeitem> 
  29.      <ie:treeitem><ie:label>2.3 Stegosaurus</ie:label></ie:treeitem> 
  30.      <ie:treeitem><ie:label>2.4 Apatosaurus</ie:label></ie:treeitem> 
  31.      <ie:treeitem><ie:label>2.5 Mammals</ie:label></ie:treeitem> 
  32.      <ie:treeitem><ie:label>2.6 Tetrapods</ie:label> 
  33.        <ie:treeitem><ie:label>2.6.1 Amphibians</ie:label></ie:treeitem> 
  34.        <ie:treeitem><ie:label>2.6.2 Whales</ie:label></ie:treeitem> 
  35.        <ie:treeitem><ie:label>2.6.3 Crocodiles</ie:label></ie:treeitem> 
  36.        <ie:treeitem><ie:label>2.6.4 Sea Turtles</ie:label></ie:treeitem> 
  37.      </ie:treeitem> 
  38.      <ie:treeitem><ie:label>2.7 Late Permian</ie:label></ie:treeitem> 
  39.      <ie:treeitem><ie:label>2.8 Mesozoic</ie:label></ie:treeitem> 
  40.   </ie:treeitem> 
  41.   <ie:treeitem><ie:label>3.0 Archosaurs</ie:label> 
  42.      <ie:treeitem><ie:label>3.1 Mandibular fenestra</ie:label></ie:treeitem> 
  43.      <ie:treeitem><ie:label>3.2 Pointed Snout</ie:label></ie:treeitem> 
  44.      <ie:treeitem><ie:label>3.3 Theocodant Tooth Implantation</ie:label></ie:treeitem> 
  45.      <ie:treeitem><ie:label>3.4 Modified Ankle</ie:label></ie:treeitem> 
  46.   </ie:treeitem> 
  47.   <ie:treeitem><ie:label>4.0 Mesozoic</ie:label> 
  48.      <ie:treeitem><ie:label>4.1 Middle Animals</ie:label></ie:treeitem> 
  49.   </ie:treeitem> 
  50. </ie:tree> 
  51. <script> 
  52. // variables for drag/drop 
  53. var dragElement = null
  54. var dropElement = null
  55. var currOver = null
  56. // variables for expanding/collapsing 
  57. var flyCount = 5
  58. var msecs = 5
  59. var currCount = 0
  60. // event handler hookup 
  61. TheTree.onmousedown = preselect
  62. TheTree.ondragstart = dragstart; 
  63. TheTree.ondragend = dragend; 
  64. TheTree.ondragenter = dragover
  65. TheTree.ondragover = dragover; 
  66. TheTree.ondragend = dragend; 
  67. TheTree.ondrop = dragdrop
  68. document.onclick = click; 
  69. // drag/drop code 
  70. // method called as we start drag/drop 
  71. function dragstart() { 
  72.   var e; 
  73.   e = window.event.srcElement; 
  74.   if (e.tagName != "label")  
  75.     return false; 
  76.   dragElement = e.parentElement; 
  77. // called as we mouse over - note that there is special handling for dragover code 
  78. // as dragleave doesn't track the toElement/fromElement as mouseover/mouseout does 
  79. function dragover() { 
  80.   if (window.event.srcElement.tagName != "treeitem")  
  81.     return; 
  82.   if (!dragElement.contains(window.event.srcElement)) { 
  83.     if (currOver) { 
  84.       currOver.style.borderTopColor = ""
  85.     } 
  86.     currOver = window.event.srcElement; 
  87.     window.event.srcElement.style.borderTopColor = "black"
  88.     event.returnValue = false
  89.   } 
  90. // called when drag is ended - always 
  91. function dragend() { 
  92.   if (currOver) { 
  93.     currOver.style.borderTopColor = ""
  94.   } 
  95. // called on drop 
  96. function dragdrop() { 
  97.   if (currOver) { 
  98.     currOver.style.borderTopColor = ""
  99.   } 
  100.   t = currOver
  101.   t.parentElement.insertBefore(dragElement, t); 
  102. // needed to select items so they can be dragged 
  103. // drag drop only supported on selection and images 
  104. function preselect() { 
  105.   var e; 
  106.   e = window.event.srcElement; 
  107.   if (e.tagName != "label") { 
  108.     return; 
  109.   } 
  110.   r = document.body.createTextRange(); 
  111.   r.moveToElementText(e); 
  112.   r.select(); 
  113.   window.event.cancelBubble = true
  114. // beginning of expand/collapse code 
  115. // called to handle document click, starts toggling 
  116. function click() { 
  117.   if (window.event.srcElement.tagName != "label") { 
  118.     return; 
  119.   } 
  120.   if (window.event.srcElement.parentElement.children.length > 1) { 
  121.     toggleState(window.event.srcElement.parentElement); 
  122.   } 
  123. // toggles expanding/collapse state of an element - does setup 
  124. function toggleState(e) { 
  125.    ee.oHeight = e.scrollHeight + 2; 
  126.    ee.style.posHeight = e.offsetHeight; 
  127.    
  128.    if (e.scrollHeight >= e.offsetHeight) { 
  129.       growIt(e); 
  130.    } else { 
  131.       shrinkIt(e); 
  132.    } 
  133. // called to initiate growing an element 
  134. function growIt(e) { 
  135.   currCount = 0
  136.   window.setTimeout("doGrow(" + e.uniqueID + ");", msecs); 
  137. // called to initiate shrinking an element 
  138. function shrinkIt(e) { 
  139.   currCount = 0
  140.   window.setTimeout("doShrink(" + e.uniqueID + ");", msecs); 
  141. // inner loop for growing an object 
  142. function doGrow(e) { 
  143.   var dh; 
  144.   var lineHeight = e.children[0].offsetHeight; 
  145.   currCount++; 
  146.   dh = e.oHeight / flyCount; 
  147.   if (e.style.posHeight != e.oHeight) { 
  148.     e.style.posHeight += dh; 
  149.   } 
  150.   if (currCount < flyCount) { 
  151.       window.setTimeout("doGrow(" + e.uniqueID + ");", msecs); 
  152.   } 
  153.   else { 
  154.       e.style.height = ""
  155.   } 
  156. // inner loop for shrinking an object 
  157. function doShrink(e) { 
  158.   var dh, dw; 
  159.   var lineHeight = e.children[0].offsetHeight; 
  160.   var p; 
  161.   currCount++; 
  162.   dh = (e.oHeight - lineHeight) / flyCount; 
  163.   e.style.posHeight -dh
  164.   if (currCount < flyCount) { 
  165.         window.setTimeout("doShrink(" + e.uniqueID + ");", msecs); 
  166.   } 
  167.   else { 
  168.     e.style.posHeight = lineHeight
  169.   } 
  170. </script> 
  171. </body> 
  172. </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值