• 老男孩Day17作业:后台管理平台编辑表格


    一、作业需求:
    
    后台管理平台 ,编辑表格:
    
    1. 非编辑模式:
    
    可对每行进行选择; 反选; 取消选择
    
    2. 编辑模式:
    
    进入编辑模式时如果行被选中,则被选中的行万变为可编辑状态,未选中的不改变
    
    退出编辑模式时,所有的行进入非编辑状态
    
    处于编辑模式时,行被选中则进入编辑状态,取消选择则进入非编辑状态
    
    二、博客地址:https://www.cnblogs.com/catepython/p/9516250.html
    
    三、运行环境
    
    操作系统:Win10
    
    Python:3.6.4rcl
    
    Pycharm:2017.3.4
    
    四、功能实现
    
    实现功能:
    1、非编辑模式
        ​    可以对每行进行选择,全选,取消,反选 ;
    
    2、编辑模式
        ​   进入编辑模式时:
                如果行被选中,则被选中的行变为可编辑状态,未选中则不改变
        ​   退出编辑模式时:
                保存所有的行的修改并进入非编辑状态
        ​   单个勾选: 
                勾上时: 进入编辑状态
                去勾时: 保存所在行的修改进入非编辑状态
        ​   全选时: 
                所有行进入编辑状态
           取消是: 
                   所有行保存修改进入非编辑状态
           反选时: 
                   被选中的行 
                       取消勾选 保存修改进入非编辑状态
                   未被选中的行 
                       进行勾选 进入编辑状态 
    readme

    一、相关知识点

    jQuery
        
        http://jquery.cuishifeng.cn/
        
        模块 《=》类库
        DOM/BOM/JavaScript的类库
        
        版本:
            1.x  1.12
            2.x
            3.x
        
        转换:
            jquery对象[0]   => Dom对象
            Dom对象         => $(Dom对象)
        
        
        一、查找元素
            DOM
                10左右
            jQuery:
                选择器,直接找到某个或者某类标签
                1. id
                    $('#id')
                2. class
                    <div class='c1'></div>
                    $(".c1")
                3. 标签
                    <div id='i10' class='c1'>
                        <a>f</a>
                        <a>f</a>
                    </div>
                    <div class='c1'>
                        <a>f</a>
                    </div>
                    <div class='c1'>
                        <div class='c2'> </div>
                    </div>
                    
                    $('a')
                    
                4. 组合a
                    <div id='i10' class='c1'>
                        <a>f</a>
                        <a>f</a>
                    </div>
                    <div class='c1'>
                        <a>f</a>
                    </div>
                    <div class='c1'>
                        <div class='c2'> </div>
                    </div>
                    
                    $('a')
                    $('.c2')
                    
                    $('a,.c2,#i10')
                    
                5. 层级
                    $('#i10 a') 子子孙孙
                    $('#i10>a') 儿子
                    
                6. 基本
                    :first
                    :last
                    :eq()
                7. 属性
                    $('[alex]')       具有alex属性的所有标签
                    $('[alex="123"]') alex属性等于123的标签
                    
                
                    <input type='text'/>
                    <input type='text'/>
                    <input type='file'/>
                    <input type='password'/>
                    
                    $("input[type='text']")
                    $(':text')
                
                实例:    
                    多选,反选,全选
                    - 选择权
                    - 
                        $('#tb:checkbox').prop('checked');        获取值
                        $('#tb:checkbox').prop('checked', true);  设置值
                    - 
                        jQuery方法内置循环: $('#tb:checkbox').xxxx
                        
                    - $('#tb:checkbox').each(function(k){
                            // k当前索引
                            // this,DOM,当前循环的元素 $(this)
                            
                        })
                    - var v = 条件 ? 真值 : 假值
                    
                    
                筛选
                    
                    
                    $('#i1').next()
                    $('#i1').nextAll()
                    $('#i1').nextUntil('#ii1')
                    
                    <div>
                        <a>asdf</a>
                        <a>asdf</a>
                        <a id='i1'>asdf</a>
                        <a>asdf</a>
                        <a id='ii1'>asdf</a>
                        <a>asdf</a>
                    </div>
                    
                    $('#i1').prev()
                    $('#i1').prevAll()
                    $('#i1').prevUntil('#ii1')
                    
                    
                    $('#i1').parent()
                    $('#i1').parents()
                    $('#i1').parentsUntil()
                    
                    $('#i1').children()
                    $('#i1').siblings()
                    $('#i1').find()
                    $('li:eq(1)')
                    $('li').eq(1)
                    first()
                    last()
                    hasClass(class)
    
            文本操作:
                    $(..).text()           # 获取文本内容
                    $(..).text(“<a>1</a>”) # 设置文本内容
                    
                    $(..).html()
                    $(..).html("<a>1</a>")
                    
                    $(..).val()
                    $(..).val(..)
            样式操作:
                    addClass
                    removeClass
                    toggleClass
                    
            属性操作:
                    # 专门用于做自定义属性
                    $(..).attr('n')
                    $(..).attr('n','v')
                    $(..).removeAttr('n')
                    
                    <input type='checkbox' id='i1'  />
                    
                    
                    # 专门用于chekbox,radio
                    $(..).prop('checked')
                    $(..).prop('checked', true)
                    
                    PS: 
                        index 获取索引位置
                        
            文档处理:
                    append
                    prepend
                    after
                    before
                    
                    remove
                    empty
                    
                    clone
            css处理
                
                $('t1').css('样式名称', '样式值')
                点赞:
                     - $('t1').append()
                     - $('t1').remove()
                     - setInterval
                     - 透明度 1 》 0
                     - position
                     - 字体大小,位置
            位置:
                $(window).scrollTop()  获取
                $(window).scrollTop(0) 设置
                scrollLeft([val])
                
                offset().left                 指定标签在html中的坐标
                offset().top                  指定标签在html中的坐标
                
                position()                       指定标签相对父标签(relative)标签的坐标
                <div style='relative'>
                    <div>
                        <div id='i1' style='position:absolute;height:80px;border:1px'></div>
                    </div>
                </div>
                
                
                $('i1').height()           # 获取标签的高度 纯高度
                $('i1').innerHeight()      # 获取边框 + 纯高度 + ?
                $('i1').outerHeight()      # 获取边框 + 纯高度 + ?
                $('i1').outerHeight(true)  # 获取边框 + 纯高度 + ?
                
                # 纯高度,边框,外边距,内边距
                
            事件
                DOM: 三种绑定方式
                    jQuery:
                        $('.c1').click()
                        $('.c1').....
                        
                        $('.c1').bind('click',function(){
                            
                        })
                        
                        $('.c1').unbind('click',function(){
                            
                        })
                        
                        *******************
                        $('.c').delegate('a', 'click', function(){
                        
                        })
                        $('.c').undelegate('a', 'click', function(){
                        
                        })
                        
                        $('.c1').on('click', function(){
                        
                        })
                        $('.c1').off('click', function(){
                        
                        })
                        
                    阻止事件发生
                        return false
                        
                    # 当页面框架加载完成之后,自动执行
                    $(function(){
                        
                        $(...)
                        
                    })
                    
            jQuery扩展:
                - $.extend        $.方法
                - $.fn.extend     $(..).方法
                
                (function(){
                    var status = 1;
                    // 封装变量
                })(jQuery)
                
                    
        二、操作元素
        
    ===》实例:
    
    作业:
        一:
                $('i1').height()           # 获取标签的高度 纯高度
                $('i1').innerHeight()      # 获取边框 + 纯高度 + ?
                $('i1').outerHeight()      # 获取边框 + 纯高度 + ?
                $('i1').outerHeight(true)  # 获取边框 + 纯高度 + ?
                
                # 纯高度,边框,外边距,内边距
                
        二、所有实例敲一遍
        
        三、编辑框
        
        
        
        
        
                
    重要笔记

    二、核心代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .title{
                height: 50px;
                margin-left: 100px;
            }
            .d1{
                height: 30px;
                 150px;
                background-color: #969696;
                display: inline-block;
                text-align: center;
                line-height: 30px;
                color: white;
                cursor: pointer;
            }
            .d1_change{
                height: 30px;
                 150px;
                background-color: yellowgreen;
                display: inline-block;
                text-align: center;
                line-height: 30px;
                color: white;
                cursor: pointer;
            }
        </style>
    </head>
    <body>
        <div class="title">
            <input type="button" value="全选"/>
            <input type="button" value="反选"/>
            <input type="button" value="取消"/>
            <div class="d1">进入编辑模式</div>
        </div>
        <table border="1" id = 't1'>
            <thead>
                <tr>
                    <th>选择</th>
                    <th>主机名</th>
                    <th>端口</th>
                    <th>状态</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><input type="checkbox"/></td>
                    <td>v1</td>
                    <td>v11</td>
                    <td class="t3">
                        下线
                    </td>
                </tr>
                <tr>
                    <td><input type="checkbox"/></td>
                    <td>v2</td>
                    <td>v22</td>
                    <td class="t3">
                        在线
                    </td>
                </tr>
                <tr>
                    <td><input type="checkbox"/></td>
                    <td>v3</td>
                    <td>v33</td>
                    <td class="t3" >
                        在线
                    </td>
                </tr>
            </tbody>
        </table>
        <script src="jquery1.12.4.js"></script>
        <script>
            $(function () {
                var checkbox = $("#t1 tbody tr td input[type = 'checkbox']");
                $("#t1 tbody tr td").delegate("input[type = 'checkbox']",'click',function () {
                    //单击checkbox函数并传参给Edit函数
                    $(this).each(function () {
                        Edit($(this));
                    })
                });
    
                function Edit(self) {
                    //判断是否已进入编辑模式
                    if(self.prop('checked') && $('.d1').attr('as')){
                        // console.log(self + " Edit() 已进入编辑模式 checked = true" );
                        af(self);
                    }else if(self.prop('checked')===false && $('.d1').attr('as')){
                        // console.log(self + " Edit() 已进入编辑模式 且 checked = false" );
                        df(self);
                    }
                }
    
                $('.d1').click(function () {
                    //点击 "编辑按钮"选择是否进入编辑模式
                    $(this).toggleClass('d1_change');
                    if($(this).hasClass('d1_change')) {
                        $(this).attr('as','on');       //已进入编辑模式后 新增该标签 as = on 属性
                        checkbox.each(function () {
                            if($(this).prop('checked')){
                                // console.log($(this) + "click() 已进入编辑模式 checked = true" );
                                af($(this));
                            }
                        })
                    }else {
                        $(this).removeAttr('as');    //取消进入编辑模式后 删除该标签 as = on 属性 并执行 df() 函数
                        checkbox.each(function () {
                            if($(this).prop('checked')){
                                $(this).prop('checked',false);
                                df($(this));
                            }
                        })
                    }
                });
    
                //  function af(self) {
                //      //checked=true 且 已进入编辑模式后 执行该函数
                //      //对可编辑框进行相应操作
                //      var v = $(self).parent().next().text();
                //      var td = $(self).parent().next();
                //      td.empty();             //删除<td>标签中的内容 <input type=text/ >
                //      var tag = document.createElement('input');  //新增input标签
                //      tag.type = 'text';
                //      tag.value = v;  //将input标签文本赋值
                //      td.append(tag);
                //      D_box(self);
                //  }
                //  function df(self) {
                //     //checked=false 或 未进入编辑模式后 执行该函数
                //     //对可编辑框进行相应操作
                //     var v = self.parent().next().children().val();
                //     var td = self.parent().next();
                //     td.empty();
                //     td.append(v);
                //     P_box(self);
                // }
               function af(self) {
                   //checked=true 且 已进入编辑模式后 执行该函数
                   //对可编辑框进行相应操作
                   var td = $(self).parent().nextUntil('.t3');
                   td.each(function () {
                       var v = $(this).text();
                       $(this).empty();
                       $(this).append("<input type='text' value='"+v+"'>");
                   });
                   D_box(self);  //调用下拉框函数
               }
    
               function df(self) {
                   //checked=false 或 未进入编辑模式后 执行该函数
                   //对可编辑框进行相应操作
                   var td = $(self).parent().nextUntil('.t3');
                   td.each(function () {
                       var v = $(this).find('input').val();
                       $(this).find('input').remove('input');
                       $(this).text(v);
                   });
                   P_box(self);     //调用取消下拉框函数
               }
    
                $('.title').delegate("input[value = '全选']",'click',function () {
                    checkbox.each(function () {
                        if($(this).prop('checked')===false){   //只将checked=false的变为true,防止原先checked=true的标签
                            $(this).prop('checked',true);       //再次被选中并更改原先样式
                            Edit($(this));
                        }
                    })
                });
                $("input[value = '反选']").click(function () {
                    checkbox.each(function () {
                        if($(this).prop('checked')){
                            $(this).prop('checked',false);
                            Edit($(this));
                        }else {
                            $(this).prop('checked',true);
                            Edit($(this));
                        }
                    })
                });
                $("input[value = '取消']").click(function () {
                    checkbox.each(function () {
                        if($(this).prop('checked')){
                            $(this).prop('checked',false);
                            Edit($(this));
                        }
                    })
                });
                function D_box(self) {
                    //下拉框处理函数
                    var select = self.parent().next().next().next();
                    select.empty();
                    var tag = "<select>
    "+"<option>上线</option>
    "+"<option>下线</option>
    "+" </select>";
                    select.append(tag);
                }
                function P_box(self) {
                    //删除下拉框select标签函数
                    var select = self.parent().next().next().next();
                    var v = $('select option:selected').val();  //获取select标签的选中值
                    select.empty();
                    select.append(v);
                }
            })
        </script>
    </body>
    </html>
    核心代码

     

  • 相关阅读:
    python学习day3--python基础
    python学习day2--python基础
    python学习day1--python基础
    包导入原则
    模块搜索路径
    继承顺序
    继承,派生,组合
    面向对象程序设计
    类和对象
    递归
  • 原文地址:https://www.cnblogs.com/catepython/p/9516250.html
Copyright © 2020-2023  润新知