html代码:

<div id="empAdd">
<fieldset>
<legend><strong>添加员工</strong></legend>
<label>编号:</label>
<input type="text" size="15" id="txtId" name="empNo" value="" maxlength="4"
autofocus="autofocus" placeholder="请输入员工编号"/>
<label>姓名:</label>
<input type="text" size="15" id="txtName" name="empName" value=""
maxlength="20" placeholder="请输入姓名"/>
<label>职位:</label>
<select id="txtJob">
<option value="0" selected="selected">请选择</option>
<option value="程序员">程序员</option>
<option value="设计师">设计师</option>
<option value="项目经理">项目经理</option>
</select>
<br>
<div>
<input type="submit" name="name" id="btnAdd" value="添加" onclick="empAdd();" />
<input type="reset" class="btn" id="btnReset" value="重置" />
</div>
</fieldset>
</div>
<div class="container">
<h1>员工管理</h1>
<table>
<thead>
<tr>
<th><input type="checkbox" name="selectAll" onchange="selectAll();" id="all" />全选</th>
<th>编号</th>
<th>姓名</th>
<th>职位</th>
<th>操作</th>
</tr>
</thead>
<tbody id="tbContent">
</tbody>
</table>
<p id="empty">
</p>
<input type="button" name="name" id="btnDelete" onclick="deleteEmp();" value="删除员工" />
</div>

JavaScript代码:

window.onload = function (){
//获取重置按钮
let btnReset = document.getElementById("btnReset");
btnReset.setAttribute("onclick","");
btnReset.onclick = function reset (){
document.querySelector("#txtId").value = "";
document.querySelector("#txtName").value = "";
document.querySelector("#txtJob").value = "0";
}
} function empAdd(){
// 1.获取输入的信息
// 1.1 获取输入的编号
let id = document.querySelector("#txtId").value;
// 1.2 获取输入的姓名
let name = document.querySelector("#txtName").value;
// 1.3 获取选择的职位
let job = document.querySelector("#txtJob").value;
//创建一个tr
let tr = document.createElement('tr');
tr.setAttribute("class","data")
//创建5个td
let tdSelect = document.createElement("td");
let tdId = document.createElement("td");
let tdName = document.createElement("td");
let tdJob = document.createElement("td");
let tdBtn = document.createElement("td");
//创建selectBtn,并添加type属性,属性值为checkbox 添加name属性,属性值为record
let selectBtn = document.createElement("input");
selectBtn.setAttribute("type","checkbox");
selectBtn.setAttribute("name","record");
//创建deleteBtn 并修改其显示的内容,增加onclick属性,属性值为delData(this);
let deleteBtn = document.createElement("button");
deleteBtn.innerText = "删除";
deleteBtn.setAttribute("onclick","delData(this);");
//给5个td分别添加显示内容
tdSelect.appendChild(selectBtn);
tdId.appendChild(document.createTextNode(id));
tdName.appendChild(document.createTextNode(name));
tdJob.appendChild(document.createTextNode(job));
tdBtn.appendChild(deleteBtn);
// 获取tbody
let tbody = document.getElementById("tbContent");
//给tbody添加子节点tr
tbody.appendChild(tr);
//给tr添加子节点td
tr.appendChild(tdSelect);
tr.appendChild(tdId);
tr.appendChild(tdName);
tr.appendChild(tdJob);
tr.appendChild(tdBtn);
//清空输入
document.querySelector("#txtId").value = "";
document.querySelector("#txtName").value = "";
document.querySelector("#txtJob").value = "0";
} function delData(node){
//获取当前节点的父节点
let parNode = node.parentNode;
//获取当前节点的祖父节点
let gradNode = parNode.parentNode;
//获取当前节点的祖父节点的父节点
let greatGradNode = gradNode.parentNode;
if (confirm("确定删除该记录吗?")){
//移除祖父节点
greatGradNode.removeChild(gradNode);
}
} function selectAll() {
//获取所有name为record的checkbox
let data = document.getElementsByName("record");
data.forEach(function (value){
value.checked = document.getElementsByName("selectAll")[0].checked;
})
} function deleteEmp(){
/*
删除所有被选中的记录
*/
//获取所有记录
let records = document.getElementsByName("record");
console.log(records);
let flag = 0;
records.forEach(function (value){
if (!value.checked){
flag++;
}
})
if (flag===records.length){
alert("请至少选中一条数据");
}
for (let i = 0; i < records.length;) {
let state = records[i].checked;
console.log(state);
if (state){
let parNode = records[i].parentNode;
let gradNode = parNode.parentNode;
let greatGradNode = gradNode.parentNode;
greatGradNode.removeChild(gradNode);
}else{
i++;
}
}
}

实现效果:

最新文章

  1. c++怎样让函数返回数组
  2. HTTPS 原理解析
  3. 深入理解CSS元素可见性visibility
  4. JavaWeb学习笔记——Tomcat相关
  5. php实现快速排序
  6. Spring EL Lists, Maps example
  7. SQL Server 执行计划重编译的两大情况
  8. VS2008通过 map 和 cod 文件定位崩溃代码行
  9. Teredo Tunnel Adapter: Error Code 10
  10. 面试题: 多个 await 处理,有一个失败,就算作失败
  11. span i s等行内元素标签之间出现奇怪空格符号
  12. ROS教程4 ROS自定义srv类型及使用
  13. 20155330 2016-2017-2 《Java程序设计》第六周学习总结
  14. javascript 练习题目答案1
  15. Bootstrap3隐藏滑动侧边栏菜单代码特效
  16. Kubernetes HPA
  17. pager-taglib分页处理的使用
  18. 安装samba脚本
  19. 一圖讓你看懂javascript原型鏈
  20. 解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]

热门文章

  1. Educational Codeforces Round 102 (Rated for Div. 2) D. Program (思维,前缀和)
  2. Codeforces Round #582 (Div. 3) G. Path Queries (并查集计数)
  3. zjnu1181 石子合并【基础算法・动态规划】——高级
  4. Educational Codeforces Round 95 (Rated for Div. 2) C. Mortal Kombat Tower (DP)
  5. solidity的函数修改器(modifier)
  6. InnoDB 存储引擎简介
  7. C - 可变参函数与可变参宏
  8. spring再学习之整合JDBC
  9. 逆元 exgcd 费马小定理 中国剩余定理的理解和证明
  10. codeforces 868B