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>")
                }    
            });
        });
    }) 
  • 相关阅读:
    TCP/IP 网路基础
    三、Django之请求与响应-Part 1
    二、Django快速安装
    Linux 优化详解
    缓存的正确使用方式
    HTML从入门到放弃
    Ansible开发之路
    程序猿数据库学习指南
    MySQL错误代码大全
    Python之网络编程
  • 原文地址:https://www.cnblogs.com/luwanying/p/9530274.html
Copyright © 2011-2022 走看看