JavaScript实现动态添加员工
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实现动态添加员工的更多相关文章
- javascript;select动态添加和删除option
<select id="sltCity"></select> //添加Option. var optionObj = new Option(text, va ...
- 20、formAdd,javascript实现动态添加
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- [转]jquery append 动态添加的元素事件on 不起作用的解决方案
用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...
- ASP.NET页面动态添加js脚本
有时我们需要生成自己的JavaScript代码并在运行时动态添加到页面,接下来我们来看一下如何将生成的JavaScript代码动态添加到ASP.NET页面. 为了添加脚本,要将自定义的脚本在一个字符串 ...
- jquery append 动态添加的元素事件on 不起作用问题的解决
on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delete). 不多说看成功代码(注意加粗加色): <!DOCTYPE html PUBLIC "-//W ...
- jquery append 动态添加的元素事件on 不起作用的解决方案
用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...
- jquery append 动态添加的元素绑定事件on
用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...
- 用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?
用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...
- javascript的document中的动态添加标签
document的高级篇中提供了节点操作的函数,具体包括:获取节点,改变节点,删除节点,替换节点,创建节点,添加节点,克隆节点等函数.我们可以利用这些函数动态改变html的节点. 1.JavaScri ...
随机推荐
- 【hdu 1576】A/B(数论--拓展欧几里德 求逆元 模版题)
题意:给出 A%9973 和 B,求(A/B)%9973的值. 解法:拓展欧几里德求逆元.由于同余的性质只有在 * 和 + 的情况下一直成立,我们要把 /B 转化为 *B-1,也就是求逆元. 对于 B ...
- 2020-2021 ICPC, NERC, Southern and Volga Russian Regional Contest (Online Mirror, ICPC Rules) D. Firecrackers (贪心,二分)
题意:有个长度为\(n\)的监狱,犯人在位置\(a\),cop在位置\(b\),你每次可以向左或者向右移动一个单位,或者选择不动并在原地放一个爆竹\(i\),爆竹\(i\)在\(s[i]\)秒后爆炸, ...
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) A. Prison Break
题意:有一张\(n\)x\(m\)的图,图中每个点都关押着罪犯,在坐标\((r,c)\)处有一个出口,每名罪犯每秒可以可以像上下最有移动一个单位或者不动,问所有罪犯能够逃离监狱的最少时间. 题解:直接 ...
- L3-007 天梯地图 (30分) 最短路+dp
最短路+dp思路:nuoyanli 520 Let's play computer game 输入样例1: 10 15 0 1 0 1 1 8 0 0 1 1 4 8 1 1 1 5 4 0 2 3 ...
- 2017, X Samara Regional Intercollegiate Programming Contest B.Pursuing the Happiness (string函数)
题意:给你一个字符串,可以交换两个字符的位置,问操作后能否在字符串中找到子串\("happiness"\),如果不能,输出交换的两个位置. 题解:这题其实用string中的find ...
- PowerShell随笔1---背景
既然是随笔,那就想到什么说什么,既会分享主题知识,也会分享一些其他技巧和个人学习方法,供交流. 我一般学习一个东西,我都会问几个问题: 这东西是什么? 这东西有什么用,为什么会出现,出现是为了解决什么 ...
- 关于vmwaretools
今天安装Ubuntu16.04-i386,vmware15.5,使用的快速安装,然后安装vmwaretools出现问题:无法复制粘贴,顶部管理"重新安装vmware-tools"选 ...
- 利用设置新数据存储结构解决vue中折叠面板双向绑定index引起的问题
问题背景是,在进行机器性能可视化的前端开发时,使用折叠面板将不同机器的性能图表画到不同的折叠面板上去.而机器的选择利用select下拉选项来筛选. 由于在折叠面板中,通过 如下v-model双向绑定了 ...
- Array.fill & array padding
Array.fill & array padding arr.fill(value[, start[, end]]) https://developer.mozilla.org/en-US/d ...
- js 如何打印出 prototype 的查找路径
js 如何打印出 prototype 的查找路径 Function function func (name) { this.name = name || `default name`; } f = n ...