呵呵,tree_test.zip 俺已下载,帮 LZ 看看先!htc 俺也没用过,尽量用 JS 实现相同效果吧。

解决方案 »

  1.   

    htc 只局限于IE, 没兴趣....
      

  2.   

    LZ 发的这个版本是纯 JS 的,没用 htc,XTree 2 PRE —— 不错的东东,俺正在读它的源码。xml 文件中的 action 似乎仅用于链接地址,这块儿是关键,俺还没弄明白!饭后再继续读~~~
      

  3.   

    哈哈,看一晚上总算弄明白了,晚上吃的饺子现在都消化得差不多了,回完贴再去吃点夜宵!言归正传,一开始没想看代码,直接通过 DOM 操作树上节点,本来都实现了,可是突然发现 XTree 是缓加载,第一版的方法在树首次加载时无效,因此必须读代码,弄清原理在下手!于是,饭后俺画了一张时序图分析 new WebFXLoadTree 的调用过程,弄到最后才找到症结所在,即 WebFXLoadTree.createItemFromElement(oNode)
    xloadtree2.js line 274
    WebFXLoadTree.createItemFromElement = function (oNode)
    根据 xml 节点创建树节点或递归加载子树。俺发现这个版本的 XTree 有个 Bug,即 xml 树上的 action 属性永远不会被当作函数处理!!!因此 action 的属性值总被拼接到地址后面。还有就是 LZ 在 xml 树上写的 sId 属性不知道是从哪里看到的,源码中根本不对该属性进行保存。解决方法是:
    1 使用 onaction 属性替换 action 属性;
    2 使用 id 属性替换 sId 属性。下面贴出代码,俺仅修改了 Noname8.html 和 tree.xml,没动 js ,因为现在可以实现 LZ 的要求,没必修改。另,感谢 LZ 的问题,让俺还有机会了解 XTree 这个好东东!哈L@_@K!// ==== tree.xml ====<?xml version="1.0" encoding="UTF-8"?>
    <tree>
        <tree text="item1" id="ele01" onaction="insertValue(this)" />
        <tree text="item2">
            <tree text="item2.1" id="ele0201" onaction="insertValue(this)"/>
            <tree text="item2.2" id="ele0202" onaction="insertValue(this)"/>
        </tree>
        <tree item="item3" id="ele03" onaction="insertValue(this)" />
    </tree>
    // ==== Noname8.html ==== <link type="text/css" rel="stylesheet" href="css/xtree2.css">
     <script type="text/javascript" src="js/xtree2.js"></script>
     <!-- xloadtree2.js文件依赖xtree2.js文件  -->
     <script type="text/javascript" src="js/xloadtree2.js"></script>
     
     <SCRIPT LANGUAGE="JavaScript">function strPage(a)
    {
        document.getElementById('diva').style.display = "block";
        document.getElementById('diva').style.left=a.offsetLeft+'px'
        document.getElementById('diva').style.top=a.offsetTop+ a.offsetHeight+'px'
    }
    function insertValue(oNode)
    {
        document.getElementById('txtSelection').value = oNode.text;
        document.getElementById('hidSelectedValue').value = oNode.id;
        document.getElementById('diva').style.display = "none";
    }
    </SCRIPT>
    <br>
    <br>
    <br>
    当该文本框获得焦点后,会显示一棵树(已实现,使用xtree实现的),我现在希望实现的功能时,点击树中的某一个节点,将该节点的名称值显示在文档框中,该节点的ID值放在hidden控件中,同时关闭该div的显示。
    在该链接中
    http://www.blogjava.net/davidxu/archive/2005/08/17/10332.aspx
    提供了实现该功能的方法(使用的是htc,但由于本人不懂htc所以肯请各位达人帮忙)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" id="txtSelection" width="30px" onfocus="strPage(this)">
    <div id="diva" style="overflow-y:auto;height:200px;width:70px;display:none;position:absolute">
    <script type="text/javascript">
    var tree1=new WebFXLoadTree("西医疾病","tree.xml");
    tree1.write();
    var tree2=new WebFXLoadTree("中医疾病","tree.xml");
    tree2.write();
    var tree3=new WebFXLoadTree("症状","tree.xml");
    tree3.write();
    var tree4=new WebFXLoadTree("症候","tree.xml");
    tree4.write();
    </script>
    </div>
    <input type="hidden" width="30px" id="hidSelectedValue" value="">
      

  4.   

    to: yixianggao(你我他,三人行必有我师焉!) 
    你吃饺子,是北京的吗?我也在北京,呵呵
      

  5.   

    我也在朝阳,不过还在读书,我北工大的,呵呵,我QQ:165696916
    msn:[email protected],交个朋友吧