js的動態表格的增刪改查思路


1. 首先我們要知道,動態添加,肯定不是 在頁面上寫死得,而是通過js調用循環放入到頁面上的,我們在寫動態表格的時候不要先着急寫,我們第一步要做的就是構思,要把自己的邏輯先弄清楚,不然的話,前面是好寫,到最后你就不好寫了,到最后有可能要推倒重來,因為我之前就是這樣。

2.接下來我們開始來完成代碼部分

我們寫死在頁面上的的東西應該有查詢按鈕 全部刪除 添加  還要給它一個form表單用於添加和修改數據,其實可以換別的添加和修改的方法,這里只給一個參考

代碼如下:

Html:

 

 

css:

table{position: relative;}
.head{width: 700px;height: 50px;margin: 25px auto;}
.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;}

js部分:

我們要在js當中創建一數組容器,來裝我們想要的數據(二維數組也可以);根據自己的編寫方式來,如下:

 

 

 接下來就是往我們頁面上添加這些數據了,在我們添加之前我們先把表格建立前來,所以我們要先創建表格

var bodys = document.body;//先找到body
var table = document.createElement("table");//在創建這個元素
bodys.appendChild(table);//最后把表格添加進去

此時我們的頁面結構就是這樣的

 

 

 我們可以看見我們把表格table標簽添加進去了

其他的同理

 

 

 通過for in 這個循環來添加表頭

在追加內容,通過for循環便利tr,然后再通過for in 這個循環來添加內容

我們都知道表格里面還有一些功能 比如全選,單行的修改和刪除,所以接下來我們來完成下面的功能

 

 

 我們的全選和單選一般都是放到表格的第一列

所以我們就要找到每一行的第一個td然后添加在他前面,所以我們應該想到dom樹的插入的知識點

eg.insertBefore(a,b);//把a放到b的前面;所以把全選和單選放就放到了第一列

然后添加操作,單個的修改和刪除就好添加了

直接獲取到要添加的那一行,然后用eg.appendChild()添加就好了,此時我們的頁面就寫好了:效果圖如下

 

 

 然后就是依次實現上面的功能了

全選事件:

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;//將這個按鈕循環遍歷添加單機事件
}

function fun(){
document.getElementsByClassName("box")[0].style.display = "block";//當觸發這個事件的時候class名為box的form表單顯示
var tr= this.parentNode.parentNode;//讓后找到當前行的tr
var td = tr.getElementsByTagName("td");//再找當前行下面的td
var input = document.getElementsByClassName("int");//然后獲取表單中的全部input框
// console.log(input)
for (var i = 0;i < input.length;i++) {//然后循環input
input[i].value = td[i+1].innerHTML;//並把td的值賦值給input框,這里的td為什么要加1;因為td的地0個是單選框;
}

//確定
var box2 = document.getElementsByClassName("box2")[0];//然后獲取確定按鈕的ClassName;
box2.onclick = function(){//單機事件
document.getElementsByClassName("box")[0].style.display = "none";//當觸發這個事件的時候class名為box的form表單隱藏
var td = tr.getElementsByTagName("td");//再找當前行下面的td
var input = document.getElementsByClassName("int");//然后獲取表單中的全部input框
for (var i = 0;i<input.length;i++){//然后循環input
td[i+1].innerHTML = input[i].value;//並把input框的值賦值給td
}
}
}

//清空
var box1 = document.getElementsByClassName("box1")[0];//找到當前的按鈕
box1.onclick =function(){
var input = document.getElementsByClassName("int");//找到所有的input框
for (var i = 0;i < input.length;i++) {
input[i].value = "";//並讓里面的值為空
}
}

//刪除

var but2 = document.getElementsByClassName("but2");//找到當前的按鈕
for(var i = 0;i<but2.length;i++){
but2[i].onclick = fun2;//將這個按鈕循環遍歷添加單機事件
}

function fun2(){
var tr= this.parentNode.parentNode;//找到當前點擊的父節點的父節點tr
// console.log(tr);
var a =document.getElementsByTagName("tbody")[0];//在找到tbody
// console.log(a);
a.removeChild(tr);//在通過tr的父親把tr刪除
alert("是否刪除!");
}

//全部刪除
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 but1 = document.getElementsByClassName("but1")[0];//找到當前的按鈕
but1.onclick = function(){
document.getElementsByClassName("box")[0].style.display = "block";//當觸發這個事件的時候class名為box的form表單顯示
}

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;//循環並把input的值賦值到obj對象里面
}
data.push(obj);//並放到數組里面
ayy(data);//並調用函數,
}

// 查詢
// input框
var phone = document.getElementsByClassName("phone")[0];
// console.log(phone);
var button = document.getElementsByClassName("button")[0];
// console.log(button);
button.onclick = function(){
var arr = [];//創建一個空數組
for(var i =0;i<data.length;i++){
if(data[i]["聯系電話"]==phone.value){//並判斷,找到你要查詢的方式,並賦值給新數組
arr.push(data[i]);//並把值放到arr中
}
}
ayy(arr);//調用封裝函數
}

這就是我的思路,,完整代碼請看下一篇博客。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM