<!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. 把一个控制器的view添加到另外一个控制器

  2. Solr搜索引擎【索引管理】

    一.索引存储 当文档提交到索引之后,directory目录组件会将它们写入到持久化存储器.Solr的目录组件具有以下重要特点: 1.隐藏持久存储的读写细节,例如,将文档写入到磁盘或通过JDBC在数据库 ...

  3. 第五章 Unity中的基础光照(1)

    [TOC] 渲染总是围绕着一个基础问题:我们如何决定一个像素的颜色?从宏观上来说,渲染包括了两大部分:决定一个像素的可见性,决定这个像素上的光照计算.而光照模型用于决定在一个像素上进行怎样的光照计算. ...

  4. Python微信公众号教程基础篇——收发文本消息

    1. 概述: 在本篇教程中,你将学会使用华为云弹性云服务器(以下简称 ECS)搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果 ...

  5. UIView的作用

    UIView [UIView的作用] 主要用来显示应用程序的内容,可以作为label.button等控件的容器.表示屏幕上的一块矩形区域,同时可以处理该区域的绘制和触屏事件. MVC,MVVM等设计架 ...

  6. openstack学习之neutron ml2初始化代码分析

    这里没有 去详细考虑neutron server怎么初始化的,而是直接从加载插件的地方开始分析.首先我们看下下面这个文件. Neutron/api/v2/router.py class APIRout ...

  7. (全国多校重现赛一) H Numbers

    zk has n numbers a1,a2,...,ana1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk generates a new ...

  8. CSUOJ2078-查找第k大(读入挂)

    查找第k大 Submit Page Output 对于每组数据,输出第k大的数 Sample Input 1 6 2 1 2 3 4 5 6 Sample Output 5 Hint #include ...

  9. Spring Cloud第八篇 | Hystrix集群监控Turbine

    ​ 本文是Spring Cloud专栏的第八篇文章,了解前七篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Clo ...

  10. jenkins持续集成工作原理、功能、部署方式等介绍

    超详细的jenkins持续集成工作原理.功能.部署方式等介绍 原创 波波说运维 2019-08-29 00:01:00 概述 今天简单整理了一下jenkins的一些概念性内容,归纳如下: 1.概念 j ...