<!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> | <a name="Dbtn" href="#">删除</a></td></tr>
<tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn" href="#">修改</a> | <a name="Dbtn" href="#">删除</a></td></tr>
<tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn" href="#">修改</a> | <a name="Dbtn" href="#">删除</a></td></tr>
<tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn" href="#">修改</a> | <a name="Dbtn" href="#">删除</a></td></tr>
<tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn" href="#">修改</a> | <a name="Dbtn" href="#">删除</a></td></tr>
<tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn" href="#">修改</a> | <a name="Dbtn" href="#">删除</a></td></tr>
<tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn" href="#">修改</a> | <a name="Dbtn" href="#">删除</a></td></tr>
<tr><td>王麻子2</td><td>***@qq.com</td><td>16600</td><td><a name="Mbtn" href="#">修改</a> | <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> | <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> | <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>