<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-199  評論-203  文章-11  trackbacks-0

    基于prototype庫實現,除了常見的各種樹功能(展開,收縮,添加/刪除/編輯節點)以外,它還提供了很多強大的特性:
    1. 支持拖拉 (drag/drop)
    2. 支持ajax/json
    3. 支持checkbox,并且有3態(全選,不選,部分選擇)
    4. 支持各種鼠標和鍵盤事件

    今天用了一天來研究TafelTree,關于TafelTree網上的資料不是很多,如下是今天做的一個小Demo,希望對和我一樣初學的朋友有所幫助.
    具體代碼如下:

     

    <html>
    <head>
        
    <title>當前在線人數</title>
        
    <link rel="stylesheet" type="text/css" href="css/tree.css" />
    <style>
        body 
    {
        background
    -color:#white;
        }

        .mover 
    {
        background
    -color:#FFCEE7;
        color:black;
        }

        
        .special 
    {
        color: #8000FF;
        }

        
        .tafelTree h3, .tafelTree p, .tafelTree ol 
    {
        margin: 
    0;
        padding: 
    0;
        }

        
        .tafelTree p 
    {
        padding
    -bottom: 1em;
        }

        
        .tafelTree h3 
    {
        color: #
    009900;
        }

    </style>

        
    <script type="text/javascript" src="js/prototype.js"></script>
        
    <script type="text/javascript" src="js/scriptaculous.js"></script>
        
    <script type="text/javascript" src="Tree-optimized.js"></script>
        
    <script type="text/javascript">
        
    function opp(branch, response){
            
    return response;
        }

        
        
    var struct2 = [{'id':'root1','txt':'總經辦','items':
                       [
    {'id':'root2','txt':'采購部','items':
                            [
    {'id':'child1','txt':"<div id='txtDiv' style='float:left'>people_01</div><img src='imgs/base.gif' id='imgDiv' style='display:none;float:left' onclick=clickEvent('computer') alt='computer'><img src='imgs/globe.gif' id='imgWord' alt='word' style='display:none;float:left' onclick=clickEvent('word')><img src='imgs/member.jpg' id='imgMember' alt='member' style='display:none;' onclick=clickEvent('member')>",'onmouseover': myMouseOver, 'onmouseout': myMouseOut},
                             
    {'id':'child2','txt':"people_02"},
                             
    {'id':'child3','txt':'people_03'},
                             
    {'id':'child4','txt':'people_04'},
                             
    {'id':'child5','txt':'people_05'},
                             
    {'id':'child6','txt':'people_06'}
                            ]
                        }
    ,
                        
    {'id':'root3','txt':'市場部','items':
                            [
    {'id':'child7','txt':'people_07'},
                            
    {'id':'child8','txt':'people_08'},
                            
    {'id':'child9','txt':'people_09'},
                            
    {'id':'child10','txt':'people_10',
                            'acceptdrop':
    false,
                            'editable':
    true,
                            'onedit':
    function(branch, newv, oldv){return newv;}
                            }

                           ]
                         }

                    ]
                  }

                ];
        
        
    var struct1 = [
        
    {
        'id' : 'root043',
        'txt' : '深圳市捷為科技有限公司'
        }
    ];
    var tree1 = null;
    var tree2 = null;


    function TafelTreeInit () {
        tree2 
    = new TafelTree('test2', struct1, {'generate':true});
        tree1 
    = new TafelTree('test1', struct2, {
            'generate':
    true,
            'openAtLoad':
    true,
            'cookies':
    true,
            'multiline':
    true,  //虛線不斷
            'rtlMode':false,    //樹的方向
            'checkboxesThreeState':true,
            'behaviourDrop':'child',
            'dropALT' : 
    false,
            'dropCTRL' : 
    false,
            'bind':[tree2]
        }
    );
        
    var branch = tree1.getBranchById('child');
        
    //復選框選中
        //alert(branch.isChecked()); 
    }


    function clickEvent(strCom)
    {
        alert(strCom);
    }


    function myMouseOut (branch) {
        
    //branch.removeClass('mover');
        document.getElementById('imgDiv').style.display='none';
        document.getElementById('imgWord').style.display
    ='none';
        document.getElementById('imgMember').style.display
    ='none';
    }

     
    function myMouseOver (branch) {
        
    //branch.addClass('mover');
        document.getElementById('imgDiv').style.display='block';
        document.getElementById('imgWord').style.display
    ='block';
        document.getElementById('imgMember').style.display
    ='block';
    }


    var branchId = '';
    var branchTxt ='';
    function glu (branch)
    {
        
    //window.alert('branch.children.length:'+branch.children.length);
        if (branch.children.length==0 && branch.isChecked())
        
    {
            branchId 
    += ','+branch.getId();
            
    var strTxt = branch.getText();
            
    if (strTxt.search('>') >= 0 && strTxt.search('</div>') >=0)
            
    {
                
    var start = strTxt.indexOf('>')+1;
                
    var end = strTxt.lastIndexOf('</div>');
            }

            branchTxt 
    += ','+branch.getText().substring(start,end);        
        }

        
        
    //window.alert('branchStr'+branchStr);
        return (branch.children.length > 0? true : false;
    }


    function testParent (branch)
    {
       
    var p = tree1.getBranches(glu);
       window.alert(branchId.substring(
    1,branchId.length));
       window.alert(branchTxt.substring(
    1,branchTxt.length));
       branchId 
    = '';
       branchTxt 
    = '';
    }


    </script>
    </head>
    <body>
    <div id="test2"></div>
    <div id="test1"></div>
    &nbsp;&nbsp;
    <div>
        
    <button onclick="testParent()">提交</button>&nbsp;
    </div>
    </body>
    </html>

    這個Demo的主要實現的功能就是
    1.支持checkbox,并且有3態(全選,不選,部分選擇),并且通過"提交"Button獲取復選框選中的按鈕的id及text,
    2.鼠標移到節點上面顯示相應的圖標,通過點擊圖片做相應的操作.
    如上Demo如果要在你本機跑起來的話,需要rafelTree_1_9_1包的一同下載到你的本機,解壓后將如上代碼保存為.html文件放在tafelTree目錄下,里面還有很多Demo,有興趣的朋友可以研究一下.\tafelTree\doc下面有相應的幫助文檔.
    posted on 2010-01-18 20:13 Werther 閱讀(1954) 評論(3)  編輯  收藏 所屬分類: 11.JavaScript

    評論:
    # re: TafelTree 的應用實例! 2010-01-18 20:50 | 咖啡妝
    不給上個圖?  回復  更多評論
      
    # re: TafelTree 的應用實例! 2010-01-19 08:50 | 在線字典
    試試...  回復  更多評論
      
    # re: TafelTree 的應用實例![未登錄] 2010-01-20 09:03 | Herry
    代碼這么長,LZ有沒有試試這個樹能不能有5000個以上的節點?我估計是不行的  回復  更多評論
      
    主站蜘蛛池模板: 亚洲综合另类小说色区| 国产免费久久精品99久久| 国产成A人亚洲精V品无码性色| 我要看免费的毛片| 无码精品一区二区三区免费视频| 美女18一级毛片免费看| 亚洲国产精品日韩在线| 亚洲成A∨人片在线观看不卡| 国产成人精品男人免费| 国产免费AV片在线播放唯爱网| 鲁丝片一区二区三区免费| 无码毛片一区二区三区视频免费播放 | 国产曰批免费视频播放免费s| 久久久久久av无码免费看大片| 亚洲AV成人精品日韩一区 | 曰批视频免费30分钟成人| 人妻在线日韩免费视频| 日韩电影免费在线观看网址| 国产 亚洲 中文在线 字幕| 亚洲综合区图片小说区| 国产亚洲综合成人91精品| 亚洲国产午夜中文字幕精品黄网站| 国内外成人免费视频| 99视频全部免费精品全部四虎| 国产va在线观看免费| a级特黄毛片免费观看| 亚洲五月午夜免费在线视频| 国产偷国产偷亚洲高清在线 | 夭天干天天做天天免费看| 动漫黄网站免费永久在线观看| 日韩在线永久免费播放| 日本免费高清视频| 在线人成免费视频69国产| 久久久受www免费人成| 一级毛片免费在线| 深夜福利在线免费观看| 污污视频免费观看网站| 免费人成视频在线观看免费| 免费无码AV一区二区| 国产成人综合亚洲| 男女作爱免费网站|