js学习dom的增删改列表

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Title</title>
    <style>
        table{
            width: 100%;
            border-spacing: 0;
            border-top: 1px solid crimson;
        }
        td{
            border-bottom: 1px solid crimson;
            border-right: 1px solid crimson;
            text-align: center;
        }
        td:last-child{
            border-right: none;
        }
        td a{
            text-decoration: none;
            color: crimson;
        }
        td a:last-child{
            color: burlywood;
        }
        .modify-box{
            width: 400px;
            border: 1px solid darkolivegreen;
            position: fixed;
            top:25%;
            left: 50%;
            transform: translate(-50%,-50%);
            background-color: gainsboro;
            display:none;
        }
        form table{
            border: none;
        }
        form td{
            border: none;
            color: black;
        }
    </style>
</head>
<body>
<!--    补充我们可以使用document.queryselectot()用css的 .***** 操作dom ;href="javascript:;" onclick="**()" /*表示返回undeined不跳转网页,执行**方法/javascript:void(0);-->
<!--    同理-->
    <div style="margin:50px auto;width: 600px;overflow: auto">
        <div style="width: 100%;height: 25px"><span>*z*******表</span><button id="insert_inf" style="float: right;width: 100px;background-color: grey">新增</button></div>
    <table>
        <thead><td>姓名</td><td>邮箱</td><td>salary</td><td>操作</td></thead>
        <tbody id="view_list">
        <tr><td>王麻子1</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn" href="#">修改</a>&nbsp;|&nbsp;<a name="Dbtn" href="#">删除</a></td></tr>
        <tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn"  href="#">修改</a>&nbsp;|&nbsp;<a name="Dbtn" href="#">删除</a></td></tr>
        <tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn"  href="#">修改</a>&nbsp;|&nbsp;<a name="Dbtn" href="#">删除</a></td></tr>
        <tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn"  href="#">修改</a>&nbsp;|&nbsp;<a name="Dbtn" href="#">删除</a></td></tr>
        <tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn"  href="#">修改</a>&nbsp;|&nbsp;<a name="Dbtn" href="#">删除</a></td></tr>
        <tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn"  href="#">修改</a>&nbsp;|&nbsp;<a name="Dbtn" href="#">删除</a></td></tr>
        <tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn"  href="#">修改</a>&nbsp;|&nbsp;<a name="Dbtn" href="#">删除</a></td></tr>
        <tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn"  href="#">修改</a>&nbsp;|&nbsp;<a name="Dbtn" href="#">删除</a></td></tr>
        </tbody>
    </table>
    </div>
    <div id="modify-box" class="modify-box">
<!--        隐藏的修改添加数据框-->
    <form>
        <spacn id="box-name" style="display: block"></spacn>
        <!--暂存数据实属无奈-->
        <span id="hidden-save-name" style="display: none"></span>
        <span id="hidden-save-email" style="display: none"></span>
        <span id="hidden-save-salary" style="display: none"></span>
        <table>
            <tr><td>姓名:</td><td><input type="text" name="m_name" value=""/></td></tr>
            <tr><td>邮箱:</td><td><input type="text" name="m_email" value=""/></td></tr>
            <tr><td>salary:</td><td><input type="number" name="m_salary" value=""/></td></tr>
            <tr><td><input id="reset" type="button" value="重置"></td><td><input id="submit" type="button" value="完成" ></td></tr>
        </table>
    </form>
    </div>
    <script type="text/javascript">
    var Dbtn=document.getElementsByName("Dbtn");
    var Mbtn=document.getElementsByName("Mbtn");
    var Mbox=document.getElementById("modify-box");
    var Mbox_name=document.getElementsByName("m_name");
    var Mbox_eamil=document.getElementsByName("m_email");
    var Mbox_salary=document.getElementsByName("m_salary");
    var Mbox_tag=document.getElementById("box-name");
    var Mbox_reset=document.getElementById("reset");
    var Mbox_submit=document.getElementById("submit");
    var Mbox_name_hidden=document.getElementById("hidden-save-name");
    var Mbox_eamil_hidden=document.getElementById("hidden-save-email");
    var Mbox_salary_hidden=document.getElementById("hidden-save-salary");
    var modifyer;/*保存修改的位置信息*/
    var Insert_btn=document.getElementById("insert_inf");
    var view_list=document.getElementById("view_list");
    function fun () {
        /*重点是插入删除必须重新赋方法来再次分配索引*/
        /*不要将循环赋值方法的函数写在循环外面会造成直接执行,是因为你把函数()写for里不是赋值而是调用函数*/
        for (let i = 0; i < Dbtn.length; i++) {
            /*为每个删除和修改添加事件,shit之前用循环没有添加成功我还以为不能*/
            Dbtn[i].onclick = function () {
                if (confirm("确定删除么?")) {/*confirm提示框会默认返回选择的false或true*/
                    let selftr = Dbtn[i].parentNode.parentNode;/*先获得自身的tr节点不要怕与其他tr重复他其实有内存地址区分的*/
                    Dbtn[i].parentNode.parentNode.parentNode.removeChild(selftr);
                    /*用table删除指定tr*/
                    fun();/*重新为列表配上方法,防止索引出现问题*/
                }
            }
            Mbtn[i].onclick = function () {
                /*打开修改盒子*//*虽然用了删除按钮的位置不影响就是偷懒*/
                modifyer = Dbtn[i].parentNode.parentNode;
                let box_name = Dbtn[i].parentNode.parentNode.children[0].textContent;
                let box_email = Dbtn[i].parentNode.parentNode.children[1].textContent;
                let box_salary = Dbtn[i].parentNode.parentNode.children[2].textContent;
                Mbox_tag.innerText = "修改中";
                Mbox_name[0].value = box_name;
                Mbox_eamil[0].value = box_email;
                Mbox_salary[0].value = box_salary;
                Mbox_name_hidden.innerText = box_name;
                Mbox_eamil_hidden.innerText = box_email;
                Mbox_salary_hidden.innerText = box_salary;
                Mbox.style.display = "block";
            }
        }
    }
    fun();
    /*完成修改点击提交按钮不考虑后端类型的数据交互只看js*/
        Mbox_reset.onclick=function(){
                Mbox_name[0].value = Mbox_name_hidden.innerText;
                Mbox_eamil[0].value = Mbox_eamil_hidden.innerText;
                Mbox_salary[0].value = Mbox_salary_hidden.innerText;
        }
        Mbox_submit.onclick=function(){
            if (Mbox_tag.innerText=="修改中") {/*我承认偷懒了尽量不要用标签字符串比较*/
                modifyer.innerHTML="<tr><td>"+Mbox_name[0].value+"</td><td>"+Mbox_eamil[0].value+"</td><td>"+Mbox_salary[0].value+"</td><td><a name=\"Mbtn\" href=\"#\">修改</a>&nbsp;|&nbsp;<a name=\"Dbtn\" href=\"#\">删除</a></td></tr>"
            }else{
                if(Mbox_name[0].value!=null&&Mbox_name[0].value!="") {
                    let insert1 = document.createElement("tr");
                    insert1.innerHTML = "<td>" + Mbox_name[0].value + "</td><td>" + Mbox_eamil[0].value + "</td><td>" + Mbox_salary[0].value + "</td><td><a name=\"Mbtn\" href=\"#\">修改</a>&nbsp;|&nbsp;<a name=\"Dbtn\" href=\"#\">删除</a></td>";
                    view_list.appendChild(insert1);
                    alert("插入成功");
                }else{
                    alert("姓名不能空");
                }
            }
            Mbox.style.display="none";
            modifyer=null;
            Mbox_name_hidden.innerText="";
            Mbox_eamil_hidden.innerText="";
            Mbox_salary_hidden.innerText="";
            Mbox_name[0].value ="";
            Mbox_eamil[0].value ="";
            Mbox_salary[0].value = "";
            /*这些都是清空操作过的数据*/
            fun();/*重新为列表配上方法*/
        }
        /*js会提升作用域所以下面再写插入也没事*/
            Insert_btn.onclick=function(){
                Mbox.style.display="block";
                Mbox_tag.innerText="新增";
            }
    /*写了好几个小时差点把我眼睛看瞎,还好ok了*/
    /*纯纯js
    * h5css
    * 确实累*/
        </script>

</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值