<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庫實現(xiàn),除了常見的各種樹功能(展開,收縮,添加/刪除/編輯節(jié)點)以外,它還提供了很多強大的特性:
    1. 支持拖拉 (drag/drop)
    2. 支持ajax/json
    3. 支持checkbox,并且有3態(tài)(全選,不選,部分選擇)
    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的主要實現(xiàn)的功能就是
    1.支持checkbox,并且有3態(tài)(全選,不選,部分選擇),并且通過"提交"Button獲取復選框選中的按鈕的id及text,
    2.鼠標移到節(jié)點上面顯示相應的圖標,通過點擊圖片做相應的操作.
    如上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個以上的節(jié)點?我估計是不行的  回復  更多評論
      
    主站蜘蛛池模板: 永久中文字幕免费视频网站| 国产∨亚洲V天堂无码久久久| 国产综合成人亚洲区| 狠狠亚洲狠狠欧洲2019| 亚洲精品免费观看| 亚洲av无码一区二区三区四区| 亚洲伊人久久大香线蕉综合图片| 99视频有精品视频免费观看| 亚洲爆乳成av人在线视菜奈实| 日韩亚洲一区二区三区| 久久不见久久见免费影院| www一区二区www免费| 亚洲一卡2卡3卡4卡国产网站| 免费人成在线观看播放国产| 91精品免费观看| 丁香六月婷婷精品免费观看| 亚洲成在人线中文字幕| 亚洲成a人片在线播放| 波多野结衣在线免费观看| 男女一边桶一边摸一边脱视频免费 | 最近免费中文字幕mv在线电影 | 日本h在线精品免费观看| 十八禁的黄污污免费网站| 亚洲天堂一区二区三区四区| 国产亚洲美日韩AV中文字幕无码成人| 18禁网站免费无遮挡无码中文| 伊人久久大香线蕉免费视频| 激情小说亚洲色图| 亚洲免费在线视频播放| 亚洲成A∨人片在线观看不卡| 又黄又大又爽免费视频| AA免费观看的1000部电影| 高清一区二区三区免费视频| 免费人成再在线观看网站| 中文字幕乱码亚洲精品一区| 久久精品国产亚洲av高清漫画 | 在线视频亚洲一区| 亚洲三级在线观看| 亚洲第一页在线视频| 亚洲AV无码不卡在线播放| 亚洲午夜福利精品无码|