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++;
}
}
}

实现效果:

JavaScript实现动态添加员工的更多相关文章

  1. javascript;select动态添加和删除option

    <select id="sltCity"></select> //添加Option. var optionObj = new Option(text, va ...

  2. 20、formAdd,javascript实现动态添加

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. [转]jquery append 动态添加的元素事件on 不起作用的解决方案

    用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...

  4. ASP.NET页面动态添加js脚本

    有时我们需要生成自己的JavaScript代码并在运行时动态添加到页面,接下来我们来看一下如何将生成的JavaScript代码动态添加到ASP.NET页面. 为了添加脚本,要将自定义的脚本在一个字符串 ...

  5. jquery append 动态添加的元素事件on 不起作用问题的解决

    on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delete). 不多说看成功代码(注意加粗加色): <!DOCTYPE html PUBLIC "-//W ...

  6. jquery append 动态添加的元素事件on 不起作用的解决方案

    用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...

  7. jquery append 动态添加的元素绑定事件on

    用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...

  8. 用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?

    用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...

  9. javascript的document中的动态添加标签

    document的高级篇中提供了节点操作的函数,具体包括:获取节点,改变节点,删除节点,替换节点,创建节点,添加节点,克隆节点等函数.我们可以利用这些函数动态改变html的节点. 1.JavaScri ...

随机推荐

  1. HDU4358 Boring counting【dsu on tree】

    Boring counting Problem Description In this problem we consider a rooted tree with N vertices. The v ...

  2. c语言实现--不带头结点的单链表操作

    1,不带头结点的单链表操作中,除了InitList(),GetElem(),ListInsert(),ListDelete()操作与带头结点的单链表有差别外,其它的操作基本上一样. 2,不带头结点单链 ...

  3. python+requests爬取百度文库ppt

    实验网站:https://wenku.baidu.com/view/c7752014f18583d04964594d.html 在下面这种类型文件中的请求头的url打开后会得到一个页面 你会得到如下图 ...

  4. SQL Server 远程连接配置

    打开sql server配置工具 SQL Server网络配置→SQLEXPRESS的协议→启用TCP/IP→右键属性→IP地址→IPALL端口修改为1433→重启SQL Server服务 https ...

  5. ssh配置方面小实验②

    4.禁止使用密码登录当我们学会了使用密钥对进行验证后,建议生产环境下将账户密码登录功能关掉配置文件:/etc/ssh/sshd_config选项: PasswordAuthentication no ...

  6. 二进制安装kubernetes(七) 部署知识点总结

    1.k8s各个组件之间通信,在高版本中,基本都是使用TSL通信,所以申请证书,是必不可少的,而且建议使用二进制安装,或者在接手一套K8S集群的时候,第一件事情是检查证书有效期,证书过期或者TSL通信问 ...

  7. codeforces 1042C Array Product【构造】

    题目:戳这里 题意:n个数,两种操作,第一种是a[i]*a[j],删掉a[i],第一种是直接删除a[i](只能用一次)剩下的数序列号不变.操作n-1次,使最后剩下的那个数最大化. 解题思路: 正数之间 ...

  8. Ubuntu第一次使用注意点

    第一次装完Ubuntu登录,打开命令行,登录的不是root权限,切换root不成功: 这个问题产生的原因是由于Ubuntu系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在 ...

  9. 在竞赛中使用new的问题

      问了一下KingSann大佬,大佬说 找空闲内存均摊O(1)但是如果new多了就是O(n) 真tm可怕..还是开个内存池好了.. 要么直接now++,要么直接Node *s=&node[t ...

  10. java有序数组的有序交集

    public static void main(String[] args) throws ParseException { int[] a = {4,5,-1,-1}; int[] b = {-1, ...