• 每天一个JS 小demo之个人信息添加。主要知识点:DOM操作中的表格操作,节点操作


    以下是简易效果:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    </head>
    <body>
    <header>
    <input type="text" value="zMouse" placeholder="名字">
    <input type="text" value="33" placeholder="年龄">
    <select>
    <option>男</option>
    <option>女</option>
    </select>
    <input type="button" value="提交">
    </header>
    <table width="500" border="1">
    <thead>
    <tr>
    <th></th>
    <th>id</th>
    <th>姓名</th>
    <th>年龄</th>
    <th>性别</th>
    <th>操作</th>
    </tr>
    </thead>
    <tbody>
    <!-- <tr><th><input type="checkbox" name=""></th><th>1</th><th>zMouse</th><th>18</th><th>男</th><th><a href="javascript:;">↑</a> <a href="javascript:;">↓</a> <a href="javascript:;">X</a></th></tr> -->
    </tbody>
    <tfoot>
    <tr>
    <td colspan="6"><input type="checkbox"><a href="javascript:;">删除选中</a></td>
    </tr>
    </tfoot>
    </table>
    <script type="text/javascript">
    (function(){
    var formContrl = document.querySelectorAll('header>*');
    var table = document.querySelector('table');
    var tBody = table.tBodies[0];
    var tFootChild = table.tFoot.rows[0].cells[0].children;
    var nub = 0;
    formContrl[formContrl.length-1].onclick = function(){
    /* 判断输入 内容 略 */
    /* 生成元素 */
    nub++;
    var tr = document.createElement("tr");
    tr.innerHTML = '<th><input type="checkbox" name=""></th><th>'+nub+'</th><th>'+formContrl[0].value+'</th><th>'+formContrl[1].value+'</th><th>'+formContrl[2].value+'</th><th><a href="javascript:;">↑</a> <a href="javascript:;">↓</a> <a href="javascript:;">X</a></th>';

    /* 绑定事件 */
    var a = tr.querySelectorAll('a');
    var check = tr.querySelector('input');
    /*选中单个时候,操作整体书否全选 */
    check.onchange = setCheckAll;
    tFootChild[0].checked = false;

    /* 上移 */
    a[0].onclick = function(){
    if(tr.previousElementSibling){
    tBody.insertBefore(tr,tr.previousElementSibling);
    } else {
    //alert("已经是第一个了");
    tBody.appendChild(tr);
    }
    };
    /* 下移 */
    a[1].onclick = function(){
    if(tr.nextElementSibling){
    tBody.insertBefore(tr.nextElementSibling,tr);
    } else {
    //alert("已经是第一个了");
    tBody.insertBefore(tr,tBody.rows[0]);
    }
    };
    /*删除 */
    a[2].onclick = function(){
    tBody.removeChild(tr);
    setCheckAll();
    };
    /* 插入元素 */
    tBody.appendChild(tr);
    };
    tFootChild[0].onchange = function(){
    /*操作 所有复选框的全选和全不选*/
    var checks = tBody.querySelectorAll('input');
    var _this = this;
    checks.forEach(function(value){
    value.checked = _this.checked;
    });
    };

    /*删除选中 */
    tFootChild[1].onclick = function(){
    /*操作 所有复选框的全选和全不选*/
    var checks = tBody.querySelectorAll('input');
    var _this = this;
    checks.forEach(function(value){
    if(value.checked){
    tBody.removeChild(value.parentNode.parentNode);
    }
    });
    };


    /*设置全选*/
    function setCheckAll(){
    tFootChild[0].checked = getCheckAll();
    }
    /* 获取这一组的check是否全部选中 */
    function getCheckAll(){
    var checks = tBody.querySelectorAll('input');
    for(var i = 0; i < checks.length;i++){
    if(!checks[i].checked){
    return false;
    }
    }
    return true;
    }
    })();
    </script>
    </body>
    </html>

  • 相关阅读:
    VS2019 连接数据库
    简单工厂、工厂方法和抽象工厂
    设计模式七大原则
    利用反射实现的抽象工厂
    SQLServer 数据库 复习
    C# Task使用方式
    单例模式
    Github
    koabody
    Sequelize软删除paranoid
  • 原文地址:https://www.cnblogs.com/catEatBird/p/7003755.html
Copyright © 2020-2023  润新知