<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
table{
position: relative;
}
.head{
width: 700px;
height: 50px;
margin: 25px auto;
/*border:1px solid red;*/
}
.but{
margin-left: 500px;
}
td{
text-align: center;
line-height: 50px;
font-size: 20px;
font-weight:bold;
width: 120px;
height:30px;
border:1px solid black;
}
.box{
width: 250px;
height: 250px;
border:1px solid black;
position: absolute;
background-color: red;
text-align: right;
top:200px;
left: 800px;
display: none;
z-index: 100;
}
.box>button{
margin-top:10px;
}
</style>
</head>
<body>
<div class="head">
联系电话:<input type="text" name="" class="phone"> <button class="button">查询</button></br>
<button class="but">删除</button>
<button class="but1">添加</button>
</div>
<div class="box">
<form >
姓名:<input type="text" name="" placeholder="请输入姓名" class="int"><br>
性别:<input type="text" name="" placeholder="男/女" class="int"><br>
年龄:<input type="text" name="" placeholder="请输入年龄" class="int"><br>
联系电话:<input type="text" name="" placeholder="请输入电话" class="int"><br>
籍贯:<input type="text" name="" placeholder="请输入籍贯" class="int"><br>
简介:<input type="text" name="" placeholder="简介" class="int"><br>
入职时间:<input type="text" name="" placeholder="请输入入职时间" class="int">
</form>
<button class="box1">清空</button>
<button class="box2">确定</button>
<button class="box3">添加</button>
<button class="box4">取消</button>
</div>

<script src="01.js"></script>
</body>
</html>

var data = [
{"姓名":"张三","性别":"男","年龄":20,"联系电话":13076752470,"籍贯":"湖北","简介":"没有","入职时间":"2011年"},
{"姓名":"赵晓晓","性别":"女","年龄":19,"联系电话":15921347851,"籍贯":"湖南","简介":"没有","入职时间":"2011年"},
{"姓名":"钱书怡","性别":"女","年龄":21,"联系电话":17254863571,"籍贯":"北京","简介":"没有","入职时间":"2011年"},
{"姓名":"周明","性别":"男","年龄":25,"联系电话":15767546842,"籍贯":"浙江","简介":"没有","入职时间":"2011年"},
{"姓名":"王五","性别":"男","年龄":34,"联系电话":12474855680,"籍贯":"天津","简介":"没有","入职时间":"2011年"},
{"姓名":"郑梦","性别":"男","年龄":25,"联系电话":15124875401,"籍贯":"河北","简介":"没有","入职时间":"2011年"},
];

var bodys = document.body;
var table = document.createElement("table");
bodys.appendChild(table);
table.style.width="1080px";
// table.style.height="1000px";
table.style.margin="0 auto";
table.style.border="1px solid black";
function ayy(data){
document.getElementsByTagName('table')[0].innerHTML = '';
var thead = document.createElement("thead");
table.appendChild(thead);

//添加表头
for(key in data[0]){
var td = document.createElement("td");
td.innerHTML=key;
var a=thead.appendChild(td);
}
var tbody = document.createElement("tbody");
table.appendChild(tbody);
tbody.className="a";

//添加内容
for(var i=0;i<data.length;i++){
var tr=document.createElement("tr");
var s = tbody.appendChild(tr);
tr.style.width="1080px";
tr.style.height="30px";
tr.style.border="1px solid black";
for(var j in data[i]){
var td =document.createElement("td");
td.innerHTML = data[i][j];
var c=tr.appendChild(td);
}
}

//追加全选
var tables= document.getElementsByTagName("table")[0].firstElementChild.firstElementChild
var tds =document.createElement("td");
tds.innerHTML = '<input type="checkbox" class="a"/>全选';
thead.insertBefore(tds,tables);
tds.className="all";

//追加操作
var tables= document.getElementsByTagName("table")[0].firstElementChild.firstElementChild
var tds1 =document.createElement("td");
tds1.innerHTML = '操作';
thead.appendChild(tds1);

//追加单个input的框;
var a=document.getElementsByTagName('tbody')[0].children;
for(var j=0;j<a.length;j++){
var trs= a[j].firstElementChild;
var tdss =document.createElement("td");
tdss.innerHTML = '<input type="checkbox"/>';
a[j].insertBefore(tdss,trs);
tdss.className="chb";
}
//追加删除和修改
var a=document.querySelectorAll(".a tr");
for(var j=0;j<a.length;j++){
var trs= a[j].firstElementChild;
var tdss1 =document.createElement("td");
tdss1.innerHTML = '<button class="but1">修改</button></br><button class="but2">删除</button>';
a[j].appendChild(tdss1);
}

//全选事件
var all = document.querySelector("thead>td:first-child>input");
// 找到table下面thead下第一个td中的input,为其绑定单击事件
all.onclick= function(){
var chb=document.querySelectorAll("table>tbody>tr>td:first-child>input");
// 获取table下tbody下所有第一个td中的input
for(var i= 0;i<chb.length;i++){
// 遍历chb数组中每个chb
chb[i].checked=this.checked;
// 让每一个chb的状态都跟All得状态一样
}
}

// 单个选中取消操作
var chb=document.querySelectorAll("table>tbody>tr>td:first-child>input");
// 找到table下tbody下的所有第一个td中的input 保存在chbs
for(var i=0;i<chb.length;i++){
// 遍历chb数组中每个chb
chb[i].onclick=function(){
// 为当前chb绑定单击事件
if(!this.checked){
// 如果当前chb未选中
all.checked=false;
// all修改为未选中
}
else{
var unSel = document.querySelectorAll("table>tbody td:first-child>input:not(:checked)");
// 获得table中tbody下所有第一个td中的未选中的input unSel
if(unSel.length==0){
// 如果unSel的length是等于0
all.checked=true;
// all修改为选中
}else{
all.checked=false;
// all修改为未选中
}
}
}
}

//修改事件
var but1= document.getElementsByClassName("but1");
// console.log(but1);
for(var j=0;j<but1.length;j++){
but1[j].onclick = fun
}

//删除事件
var but2 = document.getElementsByClassName("but2");
for(var i = 0;i<but2.length;i++){
but2[i].onclick = fun2;
}
}

ayy(data)

function fun(){
document.getElementsByClassName("box")[0].style.display = "block";
var tr= this.parentNode.parentNode;
var td = tr.getElementsByTagName("td");
var input = document.getElementsByClassName("int");
// console.log(input)
for (var i = 0;i < input.length;i++) {
input[i].value = td[i+1].innerHTML;
}

//确定
var box2 = document.getElementsByClassName("box2")[0];
box2.onclick = function(){
document.getElementsByClassName("box")[0].style.display = "none";
// var tr= document.getElementsByTagName("tr");
// for(var n = 0;n<tr.length;n++){
var td = tr.getElementsByTagName("td");
// }
var input = document.getElementsByClassName("int");
for (var i = 0;i<input.length;i++){
td[i+1].innerHTML = input[i].value;
}
}
}
//清空
var box1 = document.getElementsByClassName("box1")[0];
box1.onclick =function(){
var input = document.getElementsByClassName("int");
for (var i = 0;i < input.length;i++) {
input[i].value = "";
}
}
//删除

function fun2(){
var tr= this.parentNode.parentNode;
// console.log(tr);
var a =document.getElementsByTagName("tbody")[0];
// console.log(a);
if(confirm("是否删除!")==true){
a.removeChild(tr);
}
}

// 取消
var box4 = document.getElementsByClassName("box4")[0];
box4.onclick = function(){
document.getElementsByClassName("box")[0].style.display = "none";
}

//添加
var but1 = document.getElementsByClassName("but1")[0];
but1.onclick = function(){
document.getElementsByClassName("box")[0].style.display = "block";
}

var input = document.getElementsByClassName("int");
var box3 = document.getElementsByClassName("box3")[0];
box3.onclick = function(){
var obj = {};
for(var i=0;i<input.length;i++){
obj[i]=input[i].value;
}
data.push(obj)
ayy(data)
}

//全部删除(这个不建议使用)
//var but = document.getElementsByClassName("but")[0];
//but.onclick = function(){
//var bodys = document.body;
//var tables= document.getElementsByTagName("table")[0];
//console.log(tables);
//bodys.removeChild(tables);
//alert("确定全部删除!");
//}

//全部删除(全部删除用这个比较好,因为这个结合了前面的单选框)

var but = document.getElementsByClassName("but")[0];
but.onclick = function(){
var b = confirm("是否删除!")
var chb=document.querySelectorAll("table>tbody>tr>td:first-child>input");
for(var i = 0;i<chb.length;i++){
if(chb[i].checked==true){
var tr = chb[i].parentNode.parentNode;
console.log(tr)
var a =document.getElementsByTagName("tbody")[0];
if(b==true){
a.removeChild(tr)
}

}

}
}

// 查询
// input框
var phone = document.getElementsByClassName("phone")[0];
// console.log(phone);
var button = document.getElementsByClassName("button")[0];
// console.log(button);
button.onclick = function(){
// var a1=document.querySelectorAll(".a tr");
// var a1 = document.querySelectorAll("table tbody tr td:nth-child(5)");
// console.log(a1);
// var arr = [];
// for(var i= 0;i<a1.length;i++){
// var td = tr.getElementsByTagName("td");

// }
// for(var i = 0 ,arr =[]; i<a1.length;i++){
// if(a1[i].innerHTML.indexOf(phone.value) != -1){
// arr.push(a1[i])
// }
// }
// ayy(arr);
//
var arr = [];
for(var i =0;i<data.length;i++){
if(data[i]["联系电话"]==phone.value){
arr.push(data[i]);
}
}
ayy(arr);
}

不懂得地方看前一篇的思路分析

这里我要补充一点,我删除弹框用的不太好;建议用confirm(),应为这个提示框有返回值,这个alert(),没有返回值,不符合我们在页面的正常使用。

js的动态表格的增删改查完整代码的更多相关文章

  1. js的动态表格的增删改查思路

    1. 首先我们要知道,动态添加,肯定不是 在页面上写死得,而是通过js调用循环放入到页面上的,我们在写动态表格的时候不要先着急写,我们第一步要做的就是构思,要把自己的逻辑先弄清楚,不然的话,前面是好写 ...

  2. 【原生】js实现表格的增删改查

    说在前面的,写给小白白的,大神请绕道~ 今天用原生js写一下动态表格的增删改查,主要是熟悉一下js的DOM操作. 首先,做一个表格,用来显示提交的数据,如图下: 此处,我添加了编号.姓名.密码.生日. ...

  3. 用 JS(JavaScript )实现增删改查

    JS小例题 学习内容: 需求 总结: 学习内容: 需求 用 JavaScript 实现简单增删改查 实现代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HT ...

  4. jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)

    jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...

  5. js实现表格的增删改查

    这份代码实现了对表格的增加,删除,更改,查询. 点击一次添加按钮,表格会增加一行. 点击重置按钮,输入框的内容会被清空. 添加一行后,最后两格为更改和删除.点击更改,原有内容会各自显示在一个输入框内, ...

  6. MVC3.0+knockout.js+Ajax 实现简单的增删改查

    MVC3.0+knockout.js+Ajax 实现简单的增删改查 自从到北京入职以来就再也没有接触MVC,很多都已经淡忘了,最近一直在看knockout.js 和webAPI,本来打算采用MVC+k ...

  7. 用AngularJS实现对表格的增删改查(仅限前端)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学、字符串、日期时间)函数[转]

    SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学.字符串.日期时间)函数   --创建表格 create table aa ( UserName varchar(50 ...

  9. 基于AT UI实现表格的增删改查遇到的坑

    基于AT UI实现表格的增删改查遇到的坑 坑一.表格数据加载的渲染报错 报错:Error in render: "TypeError: Cannot read property 'isChe ...

随机推荐

  1. MYSQL远程连接速度慢的解决方法

    在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟. 后来在网上发现解决方法,my.ini里面添加 [mysqld]skip-name-resolveskip-gran ...

  2. python函数-参数

    python函数-参数 实验室 # 演示形参是可变类型 def register(name, hobby, hobby_list=[]): hobby_list.append(hobby) print ...

  3. js抽奖概率随机取出数据(简单示例)

    在平常活动开发当中,经常会碰到抽奖等类似的js功能,那么下面我们随机取数组中的一条来展示出来. ( 一 ) 无概率问题 var gift_ = ['apple pro一台','iphoneX一台',' ...

  4. 用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

    用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心.依赖注入(DI)是 ...

  5. 补习系列(20)-大话 WebSocket 与 "尬聊"的实现

    目录 一.聊聊 WebSocket 二.Stomp 是个什么鬼 三.SpringBoot 整合 WebSocket A. 引入依赖 B. WebSocket 配置 C. 控制器 D. 前端实现 四.参 ...

  6. luogu P2272 [ZJOI2007]最大半连通子图

    题目描述 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径.若 ...

  7. 机器学习python*(深度学习)核心技术实战

    Python实战及机器学习(深度学习)技术 一,时间地点:2020年01月08日-11日 北京(机房上课,每人一台电脑进行实际案例操作,赠送 U盘拷贝资料及课件和软件)二.课程目标:1.python基 ...

  8. HDU-6119

    度度熊喜欢着喵哈哈村的大明星——星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是,星星小姐拍的一手好代码! 于是度度 ...

  9. 贝壳2020——Java校招笔试题

    算法题4道: 题目描述: 给出n个正整数,要求找出相邻两个数字中差的绝对值最小的一对数字,如果有差的绝对值相同的,则输出最前面的一对数.(2<n<=100,正整数都在10^16范围内) 输 ...

  10. ==和equals的深度分析

    ==的分析 1.对于基本数据类型,比较的是他们的具体内容是不是一样,跟他们的内存地址无关.举个栗子: public class Test{ public static void main(String ...