以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  XML+ JS创建树形菜单  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=9450)


--  作者:卷积内核
--  发布时间:8/19/2004 11:01:00 AM

--  XML+ JS创建树形菜单
--------------------------------------------------------------------------------


简单说明:

思路:
从数据岛menuXML中读取数据,从树的根节点开始分析树,
利用 hasChildNodes() [方法:是否含有子节点 ] 判断当前
节点是否有子节点,如果有子节点继续向下分析 childNodes
[对象:子节点对象集合] ,否则返回当前分析结果(树结点对象)。

主要的函数:
createTree(thisn /*树结点*/ , sd/*树深度*/)  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> DSTree </TITLE>
<META NAME="Author" CONTENT="sTarsjz@hotmail.com" >
<style>
body,td{font:12px verdana}
#treeBox{background-color:#fffffa;}
#treeBox .ec{margin:0 5 0 5;}
#treeBox .hasItems{font-weight:bold;height:20px;padding:3 6 0 6;margin:2px;cursor:hand;color:#555555;border:1px solid #fffffa;}
#treeBox .Items{height:20px;padding:3 6 0 6;margin:1px;cursor:hand;color:#555555;border:1px solid #fffffa;}
</style>
<base href="http://vip.5d.cn/star/dstree/" />
<script>
//code by star 20003-4-7
var HC = "color:#990000;border:1px solid #cccccc";
var SC = "background-color:#efefef;border:1px solid #cccccc;color:#000000;";
var IO = null;
function initTree(){
var rootn = document.all.menuXML.documentElement;
var sd = 0;
document.onselectstart = function(){return false;}
document.all.treeBox.appendChild(createTree(rootn,sd));
}
function createTree(thisn,sd){
var nodeObj = document.createElement("span");
var upobj = document.createElement("span");
with(upobj){
  style.marginLeft = sd*10;
  className = thisn.hasChildNodes()?"hasItems":"Items";
  innerHTML = "<img src=expand.gif class=ec>" + thisn.getAttribute("text") +"";
  
  onmousedown = function(){
   if(event.button != 1) return;
   if(this.getAttribute("cn")){
    this.setAttribute("open",!this.getAttribute("open"));
    this.cn.style.display = this.getAttribute("open")?"inline":"none";
    this.all.tags("img")[0].src = this.getAttribute("open")?"expand.gif":"contract.gif";
   }
   if(IO){
    IO.runtimeStyle.cssText = "";
    IO.setAttribute("selected",false);
   }
   IO = this;
   this.setAttribute("selected",true);
   this.runtimeStyle.cssText = SC;
  }
  onmouseover = function(){
   if(this.getAttribute("selected"))return;
   this.runtimeStyle.cssText = HC;
  }
  onmouseout = function(){
   if(this.getAttribute("selected"))return;
   this.runtimeStyle.cssText = "";
  }
  oncontextmenu = contextMenuHandle;
  onclick = clickHandle;
}


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
4,761.719ms