• 模态对话框和全选反选


    一、目标

    • 制作一个表格,第一行分别为选择主机名端口
    • 增加一个按钮,名称为添加
    • 点击添加按钮,出现一个半透明的遮罩层,遮罩层中间有个弹出框
    • 弹出框中有两个输入框,分别为主机名端口,还有两个按钮,分别为确定取消
    • 点击取消按钮,遮罩层和弹出框消失
    • 表格下方增加三个按钮,分别为 全选取消反选
    • 点击全选则选择这一列的选择框全部选上,取消则全部不选择,反选则和已选状态相反。

      效果:

      

    二、事例

      2.1 制作表格和添加按钮  

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div>
            <!--添加按钮-->
            <input type="button" value="添加" />
        </div>
        <div>
            <!--表格-->
            <table border="1">
                <thead>
                    <tr>
                        <th>选择</th>
                        <th>主机名</th>
                        <th>端口</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><input type="checkbox" /></td>
                        <td>1.1.1.1</td>
                        <td>191</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" /></td>
                        <td>1.1.1.2</td>
                        <td>192</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" /></td>
                        <td>1.1.1.3</td>
                        <td>193</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </body>
    </html>
    

      

      2.2 实现遮罩层和弹出框 

    # body 中html
        <!--遮罩层-->
        <div class="c1"></div>
        <!--弹出框-->
        <div class="c2">
            <div style="margin-left: 120px; margin-top: 15px">
                <span>主机名:</span>
                <input type="text" />
            </div>
            <div style="margin-left: 120px; margin-top: 18px">
                <span>端口号:</span>
                <input type="text" />
            </div>
            <div style="margin-left: 200px; margin-top: 20px">
                <input type="button" value="确定">
                <input type="button" value="取消">
            </div>
    
        </div>
    
    # css样式
    <style>
            .c1{
                position: fixed;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                background-color: black;
                opacity: 0.6;
                z-index: 9;
            }
            .c2{
                position: fixed;
                height: 150px;
                 500px;
                top: 50%;
                left: 50%;
                margin-top: -200px;
                margin-left: -250px;
                background-color: white;
                z-index: 10;
            }
    </style>
    

      效果:

      

      2.3 实现js,点击添加出现遮罩层和弹出框,点击取消则没有

      利用display:none可以是标签消失的特性,为遮罩层和弹出框都在增加一个hidden的CSS样式。修改原理的HTML代码 

    # 增加一个CSS样式
    .hidden{
                display: none;
            }
    
    # 修改遮罩层和弹出框
    <!--遮罩层-->
    <div id="i1" class="c1 hidden">
    <!--弹出框-->
    <div id="i2" class="c2 hidden">
    
    
    # 为添加和取消按钮增加一个onclick事件
    <!--添加按钮-->
    <input type="button" value="添加" onclick="AddModel();" />
    
    <input type="button" value="取消" onclick="HideModel();" />
    
    
    # 添加JS代码
    <!--JS内容-->
        <script>
            function AddModel() {
                document.getElementById('i1').classList.remove('hidden');
                document.getElementById('i2').classList.remove('hidden');
            }
            function HideModel() {
                document.getElementById('i1').classList.add('hidden');
                document.getElementById('i2').classList.add('hidden');
            }
        </script>
    

      实现效果:点击添加按钮则出现遮罩层和弹出框,点击取消则恢复原样

      2.4 实现全选、取消和反选的功能

       (1)增加3个按钮功能

    <!--全选、取消和反选-->
        <div style="padding: 5px 0">
            <input type="button" value="全选" onclick="ChooseAll();" />
            <input type="button" value="取消" onclick="CancelAll();" />
            <input type="button" value="反选" onclick="ReverseAll();" />
        </div>
    

      

      (2)为<tbody>增加一个id属性 

    <tbody id="tb">
    

      (3)编辑JS 

    // 全选
            function ChooseAll() {
                // tag获取标签<tbody>
                var tag = document.getElementById('tb');
                // 通过children获取所有子标签组成的数组
                var t_list = tag.children;
                /*
                    循环t_list,先获取tr即每行
                    再获取每行中的第一个元素,即第一个td
                    再获取第一个td中的第一个属性checkbox
                 */
                for(var i=0;i<t_list.length;i++){
                    var check = t_list[i].children[0].children[0];
                    // 设置checken,true为选中
                    check.checked = true
                }
            }
            // 取消
            function CancelAll() {
                var tag = document.getElementById('tb');
                var t_list = tag.children;
                for(var i=0;i<t_list.length;i++){
                    var check = t_list[i].children[0].children[0];
                    check.checked = false
                }
            }
            // 反选
            function ReverseAll() {
                var tag = document.getElementById('tb');
                var t_list = tag.children;
                for(var i=0;i<t_list.length;i++){
                    var check = t_list[i].children[0].children[0];
                    if(check.checked){
                        check.checked = false;
                    }else {
                        check.checked = true;
                    }
                }
            }
    

      

      完整代码:

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .hidden{
                display: none;
            }
            .c1{
                position: fixed;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                background-color: black;
                opacity: 0.6;
                z-index: 9;
            }
            .c2{
                position: fixed;
                height: 150px;
                 500px;
                top: 50%;
                left: 50%;
                margin-top: -200px;
                margin-left: -250px;
                background-color: white;
                z-index: 10;
            }
        </style>
    </head>
    <body>
        <div>
            <!--添加按钮-->
            <input type="button" value="添加" onclick="AddModel();" />
        </div>
        <div>
            <!--表格-->
            <table border="1">
                <thead>
                    <tr>
                        <th>选择</th>
                        <th>主机名</th>
                        <th>端口</th>
                    </tr>
                </thead>
                <tbody id="tb">
                    <tr>
                        <td><input type="checkbox" /></td>
                        <td>1.1.1.1</td>
                        <td>191</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" /></td>
                        <td>1.1.1.2</td>
                        <td>192</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" /></td>
                        <td>1.1.1.3</td>
                        <td>193</td>
                    </tr>
                </tbody>
            </table>
        </div>
        <!--遮罩层-->
        <div id="i1" class="c1 hidden"></div>
        <!--弹出框-->
        <div id="i2" class="c2 hidden">
            <div style="margin-left: 120px; margin-top: 15px">
                <span>主机名:</span>
                <input type="text" />
            </div>
            <div style="margin-left: 120px; margin-top: 18px">
                <span>端口号:</span>
                <input type="text" />
            </div>
            <div style="margin-left: 200px; margin-top: 20px" />
                <input type="button" value="确定">
                <input type="button" value="取消" onclick="HideModel();" />
            </div>
    
        </div>
        <!--全选、取消和反选-->
        <div style="padding: 5px 0">
            <input type="button" value="全选" onclick="ChooseAll();" />
            <input type="button" value="取消" onclick="CancelAll();" />
            <input type="button" value="反选" onclick="ReverseAll();" />
        </div>
    
        <!--JS内容-->
        <script>
            function AddModel() {
                document.getElementById('i1').classList.remove('hidden');
                document.getElementById('i2').classList.remove('hidden');
            }
            function HideModel() {
                document.getElementById('i1').classList.add('hidden');
                document.getElementById('i2').classList.add('hidden');
            }
            // 全选
            function ChooseAll() {
                // tag获取标签<tbody>
                var tag = document.getElementById('tb');
                // 通过children获取所有子标签组成的数组
                var t_list = tag.children;
                /*
                    循环t_list,先获取tr即每行
                    再获取每行中的第一个元素,即第一个td
                    再获取第一个td中的第一个属性checkbox
                 */
                for(var i=0;i<t_list.length;i++){
                    var check = t_list[i].children[0].children[0];
                    // 设置checken,true为选中
                    check.checked = true
                }
            }
            // 取消
            function CancelAll() {
                var tag = document.getElementById('tb');
                var t_list = tag.children;
                for(var i=0;i<t_list.length;i++){
                    var check = t_list[i].children[0].children[0];
                    check.checked = false
                }
            }
            // 反选
            function ReverseAll() {
                var tag = document.getElementById('tb');
                var t_list = tag.children;
                for(var i=0;i<t_list.length;i++){
                    var check = t_list[i].children[0].children[0];
                    if(check.checked){
                        check.checked = false;
                    }else {
                        check.checked = true;
                    }
                }
            }
        </script>
    </body>
    
    </html>
    

      

  • 相关阅读:
    临时更换swap优先级
    设计一个百万级的消息推送系统----转
    使用apache cxf实现webservice服务
    如何成为一位「不那么差」的程序员---转
    轻量级web框架cicada----(转)
    shiro学习笔记
    java编程调试技巧
    zookeeper学习总结
    Kafka入门
    kafka 的经典教程
  • 原文地址:https://www.cnblogs.com/bigberg/p/9241936.html
Copyright © 2020-2023  润新知