zoukankan      html  css  js  c++  java
  • 实战:点击查看详情

    简单描述需求

    • 1、顶部四个按钮代表功能,按下其中一个按钮,区域1列出这个功能的子模块;按下另一个按钮,这块区域显示的又是另一个功能的子模块(table1内容切换)。

    注:按下按钮的之后显示区域1的内容,同时会清空区域2 的内容。

    • 2、点击table1中的其中一条子模块,区域2列出这个子模块的详细信息,点击另一条子模块(table2内容切换)。

                              

    尝试一:

    1、思路:

    • 区域1有四个div,各自装有四个功能要显示的 功能列表(ul>li);
    • 点击功能1时显示div1,其余三个div被隐藏,通过show()和hide() 方法来控制区域1 显示不同功能的子模块列表。
    • 点击列表内的模块时,区域2显示不同的table,1、2、 3 、 4......(好像会很多)

    2、失败原因:

           当有四个功能时,可以通过四个div的显示和隐藏来切换 “区域1” 的内容;但是同样的方法,通过点击功能列表在 “区域2” 显示子模块的详情时,若是有很多很多个子模块,岂不是需要无数个div来切换显示,所以这个方法行不通;

    3、代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
        <link rel="stylesheet" href="assets/bootstrap-4.1.3-dist/css/bootstrap.min.css">
        <link rel="stylesheet" href="assets/style.css">
        <script src="assets/jQuery/jquery-3.2.1.min.js"></script>
        <script src="assets/main.js"></script>
    </head>
    <body>
    
    <div class="container">
        <div class="row">
            <div class="col-3 box1" id="divbox1">功能1</div>
            <div class="col-3 box1" id="divbox2">功能2</div>
            <div class="col-3 box1" id="divbox3">功能3</div>
            <div class="col-3 box1" id="divbox4">功能4</div>
        </div>
        
        <!-- 区域1 -->
        <div>
        <!-- 下面为四个div -->
            <div class="content-one">
                <ul class="list-group"></ul>
                
                <table class="table table-striped table-bordered table-hover" id="table1">
                   <tr>
                      <th>key</th>
                      <th>value</th>
                   </tr>
                    <tbody id="mytab1"></tbody>
                </table>
            </div>
            
            <div class="content-two">
                <ul class="list-group"></ul>
                <table class="table table-striped table-bordered table-hover" id="table2">
                   <tr>
                      <th>key</th>
                      <th>value</th>
                   </tr>
                    <tbody id="mytab2"></tbody>
                </table>
            </div>
            
            <div class="content-three">
                <ul class="list-group"></ul>
                <table class="table table-striped table-bordered table-hover" id="table3">
                   <tr>
                      <th>key</th>
                      <th>value</th>
                   </tr>
                    <tbody id="mytab3"></tbody>
                </table>
            </div>
            
            <div class="content-four">
                <ul class="list-group"></ul>
                <table class="table table-striped table-bordered table-hover" id="table4">
                   <tr>
                      <th>key</th>
                      <th>value</th>
                   </tr>
                    <tbody id="mytab4"></tbody>
                </table>
            </div>
        </div>
    </div>
    </body>
    </html>
    //main.js代码:
    $(function() {
        var test1 = 1;
        var test2 = 1;
        var test3 = 1;
        var test4 = 1;
    
        var anArray1 = [ 'one', 'two', 'three' ];
        var anArray2 = [ '功能1', '功能2', '功能3' ];
        var anArray3 = [ '设备1', '设备2', '设备3' ];
        
        var detail1 = " [ {name:'6101',value:'北京市'}, {name:'6102',value:'天津市'}, {name:'6103',value:'上海市'}]";
        var detailObj1 = eval("(" + detail1 + ")"); // 转换为json对象 
    
        var detail2 = " [ {name:'注册用户',value:'32'}, {name:'在线用户',value:'13'}, {name:'VIP用户',value:'10'}]";
        var detailObj2 = eval("(" + detail2 + ")");
    
        var detail3 = " [ {name:'性能',value:'良好'}, {name:'反应速度',value:'快'}, {name:'品牌',value:'华为'}]";
        var detailObj3 = eval("(" + detail3 + ")");
        
    //下面有隐藏和删除两种尝试,都只以div1为例子,还要copy出div2、3、4
    //尝试1
        $("#divbox1").click(function(e) {
                $("#table1").hide();
                var str1 = '<li class="list-group-item list1">'
                var str2 = '</li>';
                if (test1 == 1) {
                    // 遍历数组 anArray
                    for (i in anArray1) {
                        $(".content-one ul").append(str1 + anArray1[i] + str2);
                    }
                    // 遍历data对象,插入到table内部
                    var $tab1 = $("#mytab1");
                    for (i = 0; i < detailObj1.length; i++) {
                        $tab1.append("<tr>");
                        $.each(detailObj1[i],function(j, val) {
                                    $("#mytab1").append("<td>" + val + "</td>");
                                });
                        $tab1.append("</tr>");
                    }
                }
                test1 = 2;
                if (test1 == 2) {
                    $(".content-one").show();
                    $(".content-one").siblings("div").hide();
                }
                // 展示table详情
                $(".list2").click(function() {
                    $("#table2").show();
                });
                $(".list2").dblclick(function() {
                    $(".content-two").hide();
                });            
            });
            
    //尝试2
            $(".box2").click(function(e) {    
                var aaa = e.target.innerHTML;
                var bbb = getfunc(aaa);
                $(".list1,.list3,.list4").remove();//除了自己,其他所有li标签都删除
                test1 = 1;//恢复其他divbox可以点击
        
                var str1 = '<li class="list-group-item list2">'
                var str2 = '</li>';
                if (test2 == 1) {
                    // 遍历数组 anArray
                    for (i in bbb) {
                        $(".content-one ul").append(str1 + bbb[i] + str2);
                    }
                }
                test2 = 2;
                $(".list-group-item").click(function(e){
                    var aaa1 = e.target.innerHTML;
                    var bbb1 = getfunc(aaa1);
                    console.log(bbb1);
                    var $tab1 = $("#mytab1");
                    if(test2 == 2){
                        for (i in bbb1) {
    //                        alert(bbb1[i]);
                            $tab1.append("<tr class='list1'>");
                            $("#mytab1").append("<td class='list2'>" + bbb1[i] + "</td>");
                            $tab1.append("</tr>");
                        }
                    }
                    test2 = 3;
                    
                });
            });
    }) 

     

    尝试二:

    1、思路:

    • 系统初始化时默认显示区域1中“功能1”的子模块列表,区域2为空(记得隐藏区域2的表头);
    • 区域1有一个div,点击“按钮1“,div里显示功能1的子模块列表;再次点击“按钮2”时,将区域1和区域2的内容全部清空,再继续加载功能2的列表,以此类推~~~(先清空,再加载);
    • 区域2 也同理,不同的是点击“按钮1”时要清空区域1和区域2再加载,但是点击模块列表时只是清空区域2的内容再重新加载区域2,影响不到区域1;
    • 只需要1个div,通过判断所点击的div的内容(innerHTML)来选择所要加载的哪一个数组~~~

     1、代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
        <link rel="stylesheet" href="assets/bootstrap-4.1.3-dist/css/bootstrap.min.css">
        <link rel="stylesheet" href="assets/style.css">
        <script src="assets/jQuery/jquery-3.2.1.min.js"></script>
        <script src="assets/main.js"></script>
    </head>
    <body>
    
    <div class="container">
    <div class="titleDiv">
        <div class="main-nav">
        <div class="row fl" id="row">
            <div class="col-3 box" id="divbox1">功能1</div>
            <div class="col-3 box" id="divbox2">功能2</div>
            <div class="col-3 box" id="divbox3">功能3</div>
            <div class="col-3 box" id="divbox4">功能4</div>
        </div>
        </div>
    
    </div>
    
    <div class="content-one">
    <!-- 区域1 -->
        <table class="table table-bordered table-hover" id="table1">
            <tr class="tableTh">
                <th>key</th>
                <th>value</th>
            </tr>
            <tbody id="mytab1"></tbody>
        
        </table>
    <!-- 区域2 -->
        <table class="table table-bordered table-hover" id="table2">
            <tr class="tableTh">
                <th>key</th>
                <th>value</th>
                <th>修改</th>
            </tr>
            <tbody id="mytab2"></tbody>
        </table>
        
    </div>
        
    </div>
    </body>
    </html>
    $(function() {
        var list1 = " [ {name:'1234',value:'北京市'}, {name:'6102',value:'天津市'}, {name:'6103',value:'上海市'}]";
        var listObj1 = eval("(" + list1 + ")"); // 转换为json对象 
    
        var list2 = " [ {name:'性能',value:'良好'}, {name:'反应速度',value:'快'}, {name:'品牌',value:'华为'}]";
        var listObj2 = eval("(" + list2 + ")");
    
    
        var detail1 = " [ {name:'6101',value:'北京市'}, {name:'6102',value:'天津市'}, {name:'6103',value:'上海市'}]";
        var detailObj1 = eval("(" + detail1 + ")"); // 转换为json对象 、
    
        var detail2 = " [ {name:'注册用户',value:'32'}, {name:'在线用户',value:'13'}, {name:'VIP用户',value:'10'}]";
        var detailObj2 = eval("(" + detail2 + ")");
        
    //重点代码(通过判断所点击的div的内容是什么,再来选择所需要加载的是哪一个数组)
        function getChildren(parent){
            if(parent == '功能1'){
                return listObj1;
            }
            else if(parent == '功能2'){
                return listObj2;
            }
            else if(parent == '1234'){
                return detailObj1;
            }
            else if(parent == '性能'){
                return detailObj2;
            }
        }
    //初始化 
        $("#table2 .tableTh").hide();   //初始化隐藏table1的头部
        for (i in listObj1) {
                $.each(listObj1[i], function(j, val) {
                    $("#mytab1").append("<td class='list-item delete'>" + val + "</td>");
                });
                $("#mytab1").append("<tr class='delete'>");
                $("#mytab1").append("</tr>")
            }
        $(".list-item").click(function(e){
            $("#table2 .tableTh").show();  //显示table1的头部
            $(".delTr").remove();  //清空所有class为delete的标签
            var aaa1 = e.target.innerHTML;
            var bbb1 = getChildren(aaa1);
            var $tab2 = $("#mytab2");
    
            for (i in bbb1) {
                $.each(bbb1[i], function(j, val) {
                    $("#mytab2").append("<td class='delete delTr'>" + val + "</td>");
                });
                $tab2.append("<tr class='delete delTr'>");
                $tab2.append("</tr>")
            }    
        });
    //初始化 结束
        $(".box").click(function(e) {
            // this.css('background','#169BD5');
            $("#table2 .tableTh").hide();  //隐藏table1的头部
            $(".delete").remove();//清空所有class为delete的标签
    
            var aaa = e.target.innerHTML;   //aaa是被鼠标点击的div里的值 (功能1)
            var bbb = getChildren(aaa);   //bbb是一个数组,通过判断aaa是哪一个值,来判断bbb是哪一个数组
            // 遍历数组 anArray
            for (i in bbb) {
                $.each(bbb[i], function(j, val) {
                    $("#mytab1").append("<td class='list-item delete'>" + val + "</td>");
                });
                $("#mytab1").append("<tr class='delete'>");
                $("#mytab1").append("</tr>")
            }
            
            $(".list-item").click(function(e){
                $("#table2 .tableTh").show();  //显示table1的头部
                $(".delTr").remove();  //清空所有class为delete的标签
                var aaa1 = e.target.innerHTML;
                var bbb1 = getChildren(aaa1);
                var $tab2 = $("#mytab2");
    
                for (i in bbb1) {
                    $.each(bbb1[i], function(j, val) {
                        $("#mytab2").append("<td class='delete delTr'>" + val + "</td>");
                    });
                    $tab2.append("<tr class='delete delTr'>");
                    $tab2.append("</tr>")
                }    
            });
        });
    }) 
  • 相关阅读:
    钱多多软件制作04
    团队项目01应用场景
    HDU 4411 arrest
    HDU 4406 GPA
    HDU 3315 My Brute
    HDU 3667 Transportation
    HDU 2676 Matrix
    欧拉回路三水题 POJ 1041 POJ 2230 POJ 1386
    SPOJ 371 BOXES
    POJ 3422 Kaka's Matrix Travels
  • 原文地址:https://www.cnblogs.com/luwanying/p/9530274.html
Copyright © 2011-2022 走看看