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

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        容易的樹形菜單

        容易的樹形菜單

        更新時間:2019-06-30 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

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

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

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

        <script>
        /**
        * 構(gòu)造樹,初值為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>"; // 構(gòu)造節(jié)點(diǎn),注意這里的自定義屬性value。作用是簡化構(gòu)造節(jié)點(diǎn)的描述,共享參數(shù)數(shù)組信息。
        if(n > tree_ar[i+1][0]) { // 若期望層次大于當(dāng)前層次,結(jié)束本層次返回上一層次。
        s += "</td></tr>";
        return tree_ar[i+1][0];
        }
        if(n < tree_ar[i+1][0]) { // 若期望層次小于當(dāng)前層次,遞歸進(jìn)入下一層次。
        s += "<tr style='display:none' v=1><td></td><td>";
        var m = tree(tree_ar[++i][0]);
        s += "</td></tr>";
        if(m < n) { // 當(dāng)遞歸返回值小于當(dāng)前層次期望值時,將產(chǎn)生連續(xù)的返回動作。
        s += "";
        return m;
        }
        }
        }
        s += "";
        return s;
        }
        </script>

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

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

        /** 記錄層次信息,用以簡化遍歷樹時的復(fù)雜的節(jié)點(diǎn)描述 **/
        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>
        // 無分枝節(jié)點(diǎn)的點(diǎn)擊響應(yīng)
        view.innerHTML = "<b>"+tree_ar[this.value][1]+"</b>"; // 自行修改為參數(shù)數(shù)組定義的點(diǎn)擊動作
        </script>

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

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

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

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 在线观看免费a∨网站| 成人免费视频69| 国产免费人成视频在线观看| 亚洲另类视频在线观看| 免费看片在线观看| 亚洲人和日本人jizz| 日本免费网站视频www区| 亚洲AV无码国产丝袜在线观看| 久爱免费观看在线网站| 久久夜色精品国产亚洲| 日本免费高清视频| 亚洲高清无在码在线电影不卡| 日本一卡精品视频免费| 亚洲免费视频观看| 成年女人午夜毛片免费看| 亚洲精品国产suv一区88| 四虎AV永久在线精品免费观看| 污污视频免费观看网站| 亚洲最大激情中文字幕| 无码av免费一区二区三区试看| 亚洲欧洲国产精品你懂的| 国产91色综合久久免费| 亚洲日韩久久综合中文字幕| 亚洲 自拍 另类小说综合图区| av网站免费线看| 亚洲视频免费在线播放| 成年人网站在线免费观看| 最新亚洲人成无码网站| 中文字幕第13亚洲另类| 9277手机在线视频观看免费| 亚洲最大天堂无码精品区| 国产无遮挡吃胸膜奶免费看| 99精品视频在线观看免费| 亚洲欧洲日韩不卡| 免费观看男人免费桶女人视频| 无码 免费 国产在线观看91| 亚洲成年人在线观看| 成人免费在线观看网站| GOGOGO高清免费看韩国| 亚洲一区二区三区免费观看| 免费一级成人毛片|