• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        容易的樹形菜單

        容易的樹形菜單

        更新時間:2019-06-30 文章作者:未知 信息來源:網絡 閱讀次數:

        <!---
        簡單的樹形菜單

        徐祖寧(嘮叨)
        2003.03
        czjsz_ah@stats.gov.cn

        樹形菜單較滑動菜單稍微復雜一點。其主要難點在于從簡潔的數據描述來產生便于操縱的html結構。
        本例用來展示樹形菜單的編寫。使用無線表格,算法上采用了遞歸,理論上可構造無窮分制枝的樹。
        本代碼可自由擴散。
        --->
        <style>
        table {font-size = 9pt}
        td {height = 10px}
        </style>
        <body>
        <span id="menus"></span>
        <span id="view"></span>
        </body>

        <script>
        /**
        * 構造樹,初值為0
        */
        function tree(n) {
        var id = new Array("bar","pad","#","+");
        if(n == 0) { // 初始化變量
        n = 1;
        i = 0;
        s = "";
        }
        s += "<table>";
        for(;i<tree_ar.length-1;i++) {
        var k = (n >= tree_ar[i+1][0])?0:1;
        s += "<tr id='"+id[k]+"' value="+i+"><td>"+id[k+2]+"</td><td>"+tree_ar[i][1]+"</td></tr>"; // 構造節點,注意這里的自定義屬性value。作用是簡化構造節點的描述,共享參數數組信息。
        if(n > tree_ar[i+1][0]) { // 若期望層次大于當前層次,結束本層次返回上一層次。
        s += "</td></tr>";
        return tree_ar[i+1][0];
        }
        if(n < tree_ar[i+1][0]) { // 若期望層次小于當前層次,遞歸進入下一層次。
        s += "<tr style='display:none' v=1><td></td><td>";
        var m = tree(tree_ar[++i][0]);
        s += "</td></tr>";
        if(m < n) { // 當遞歸返回值小于當前層次期望值時,將產生連續的返回動作。
        s += "";
        return m;
        }
        }
        }
        s += "";
        return s;
        }
        </script>

        <script for=pad event=onclick>
        // 分枝節點的點擊響應
        v = this.parentElement.rows[this.rowIndex+1].style;
        if(v.display == 'block') {
        v.display = 'none';
        this.cells[0].innerHTML = "+";
        view.innerHTML = ""; // 自行修改為參數數組定義的閉合動作
        }else {
        v.display = 'block';
        this.cells[0].innerHTML = "-";
        view.innerHTML = "<b>"+tree_ar[this.value][1]+"</b>"; // 自行修改為參數數組定義的展開動作
        }

        /**
        * 以下代碼用于關閉已展開的其他分枝
        * 如需自行關閉展開的分枝則從這里直接返回或刪去這段代碼
        */
        if(! tree_ar[this.value].type) // 如該節點為首次進入,則記錄所在層次信息
        genTreeInfo(this);
        var n = 1*this.value+1;
        for(i=n;i<tree_ar.length-1;i++) { // 關閉排列在當前節點之后的樹
        if(tree_ar[i].type == "pad") {
        tree_ar[i].obj2.style.display = 'none';
        tree_ar[i].obj1.cells[0].innerHTML = "+";
        }
        }
        while(tree_ar[--n][0] > 1); // 回溯到當前樹的起點
        while(--n >= 0) // 關閉排列在當前樹的起點之前的樹
        if(tree_ar[n].type == "pad") {
        tree_ar[n].obj2.style.display = 'none';
        tree_ar[n].obj1.cells[0].innerHTML = "+";
        }

        /** 記錄層次信息,用以簡化遍歷樹時的復雜的節點描述 **/
        function genTreeInfo(o) {
        var el = o.parentElement;
        for(var i=0;i<el.rows.length;i++) {
        if(el.rows[i].id != "") {
        tree_ar[el.rows[i].value].type = el.rows[i].id;
        }
        if(el.rows[i].id == "pad") {
        tree_ar[el.rows[i].value].obj1 = el.rows[i];
        tree_ar[el.rows[i].value].obj2 = el.rows[i+1];
        }
        }
        }
        </script>

        <script for=bar event=onclick>
        // 無分枝節點的點擊響應
        view.innerHTML = "<b>"+tree_ar[this.value][1]+"</b>"; // 自行修改為參數數組定義的點擊動作
        </script>

        <script>
        /**
        * 基本參數數組,根據具體應用自行擴展
        * 數據可較簡單的由服務器端提供
        * 列1:節點層次
        * 列2:節點標題
        * 其余自行擴充
        */
        tree_ar = new Array(
        new Array(1,"節點1"),
        new Array(1,"節點2"),
        new Array(2,"節點3"),
        new Array(2,"節點4"),
        new Array(3,"節點5"),
        new Array(4,"節點6"),
        new Array(5,"節點7"),
        new Array(6,"節點8"),
        new Array(7,"節點9"),
        new Array(2,"節點10"),
        new Array(1,"節點11"),
        new Array(2,"節點12"),
        new Array(2,"節點13"),
        new Array(1,"節點14"),
        new Array(1,"") // 為簡化終止判斷附加的空數據項
        );

        /*** 創建菜單 ***/
        menus.innerHTML =tree(0);
        </script>

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 久久青青草原亚洲av无码app| 亚洲国产av一区二区三区| 黄网站免费在线观看| 久久综合久久综合亚洲| **aaaaa毛片免费| 亚洲福利一区二区三区| 久久久久久久久久国产精品免费| 亚洲国产精品久久久天堂| 国产偷伦视频免费观看| 亚洲av日韩av无码黑人| 永久在线免费观看| 亚洲AV成人一区二区三区在线看| 好大好硬好爽免费视频| 国产成人高清亚洲一区91| 亚洲av无码成人精品区在线播放| 一级毛片免费视频网站| 亚洲AV综合色区无码一区爱AV| 无码AV片在线观看免费| 亚洲一级毛片视频| 国产无遮挡吃胸膜奶免费看视频| 一级做a爰片久久毛片免费陪| 亚洲精品午夜无码电影网| 5555在线播放免费播放| 亚洲影院天堂中文av色| 亚洲一级Av无码毛片久久精品| 一区二区三区无码视频免费福利| 亚洲最大免费视频网| 日韩中文字幕在线免费观看| 特a级免费高清黄色片 | 亚洲精品国产av成拍色拍| 免费欧洲毛片A级视频无风险| 一边摸一边桶一边脱免费视频| 亚洲国产精品久久久天堂 | 毛片高清视频在线看免费观看| 亚洲国产精品无码中文lv| 最新精品亚洲成a人在线观看| 国产又大又粗又长免费视频| 美女18毛片免费视频| 久久久久亚洲精品天堂| 免费一级做a爰片久久毛片潮喷| 曰批全过程免费视频在线观看无码|