實戰:點擊查看詳情


簡單描述需求

  • 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>")
            }    
        });
    });
}) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM