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 ...
随机推荐
- Codeforces Round #652 (Div. 2) B. AccurateLee(字符串)
题目链接:https://codeforces.com/contest/1369/problem/B 题意 给出一个长 $n$ 的 二进制串,每次可以选择字符串中的一个 $10$,然后删除其中的一个字 ...
- HDOJ1232 畅通工程 DFS
很早之前就做过的题以前用并查集做的 现在用DFS重做算是熟悉DFS吧 #include<stdio.h>#include<string.h>const int size=100 ...
- Codeforces Round #602 Div2 D1. Optimal Subsequences (Easy Version)
题意:给你一个数组a,询问m次,每次返回长度为k的和最大的子序列(要求字典序最小)的pos位置上的数字. 题解:和最大的子序列很简单,排个序就行,但是题目要求字典序最小,那我们在刚开始的时候先记录每个 ...
- bfs输出路径 && 最短路(迪杰斯特拉)输出路径
问题描述 解决方法 1.像第一个问题那就是最短路问题(我代码采用迪杰斯特拉算法)实现 2.换乘次数最少,那就用bfs广搜来寻找答案.但是我的代码不能保证这个最少换乘是最短路程 代码 1 #includ ...
- 80x86/Pentium微机原理及接口技术-微处理器-学习笔记
80x86/ Pentium微机原理及接口技术 1. 计算机基础... 1 1.1常用术语... 1 1.2计算机中数与编码的表示方法... 1 1.2.1进制表示及进制转换... 1 1.2 ...
- win10安装CUDA CUDNN tensorflow-gpu 1.14
#1 安装anaconda 官网下载安装即可.python3.7版本 #2 安装CUDA CUDNN tensorflowgpu1.14 对应CUDNN 7.6.1 CUDA 10.0 注意ten ...
- UMD 模块 vs CJS 模块
UMD 模块 vs CJS 模块 使用方式 UMD, window 全局注册后,直接使用 <!DOCTYPE html> <html lang="zh-Hans" ...
- yarn global add !== yarn add global
yarn global add !== yarn add global yarn does not exist the --global flag, but exits yarn global com ...
- 一个最简单 node.js 命令行工具
一个最简单 node.js 命令行工具 node.js cli $ node cli.js xyz # OR $ node cli xyz 接受参数 process.argv js "use ...
- deep copy & deep merge
deep copy & deep merge JSON.parse(JSON.stringify(obj)); lodash https://lodash.com/docs/ https:// ...