当你花费三天写完增删改查动态表格的感受

在这里插入图片描述当我看到老师发给我这个效果图的我一脸懵,压根不知道怎么做到让一个表格实现动态的增删改查,虽然心里面是这么想的,但是身体还是蛮老实的自己开始动了起来 其实先完成HTML+CSS部分这个不难,但是虽说不难但是我花了点时间而且犯了一个根本性的错误那就是表格里面的数据都是要动态生成的而不是自己写上去了,然后心里面一整乱吼,重写!!。

在这里插入代码片var data =[
	  
  	{"name":"jike","sex":"男","age":17,"phone":18086297713,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2013.02.18"},  	
  	{"name":"jike1","sex":"女","age":16,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2012.02.18"},
  	{"name":"jike2","sex":"男","age":18,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2008.02.18"},
  	{"name":"jike3","sex":"女","age":60,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2006.02.18"},
  	{"name":"jike4","sex":"男","age":20,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2009.02.18"},
  	{"name":"jike5","sex":"女","age":13,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2013.02.18"},
  	{"name":"吴优","sex":"男","age":10,"phone":383843844944,"jiguan":"湖北孝感","jianjie":"一只单身狗","time":"2020.06.06"}
]
像这样写成对象形式

</div>		     
			     	<ul class="ul1">
			     		 <li class="ipt">全选 <input type="checkbox" /></li>
			     		 <li>名字</li>
			     		 <li >性别</li>
			     		 <li>年龄</li>
			     		 <li>手机号</li>
			     		 <li>籍贯</li>
			     		 <li>简介</li>
			     		 <li>入职时间</li>
			     		 <li>操作</li>
			  </ul> 
			------这里是HTML部分的东西实在的下面这种让页面生成数据显示到页面的方法真的如醍醐灌顶,焕然一新,原来还有这种操作。     	
function wendang(){ 
   	  div1.innerHTML="";
   	  selectALL.checked = false;
   for(let i=0; i<data.length;i++){
   	       div1.innerHTML +=`<ul class="ul1"><li class="ipt"><input type="checkbox" onclick = "fun(this)"/></li>
   	   				<li>${data[i].name}</li>
		     		 <li>${data[i].sex}</li>
		     		 <li>${data[i].age}</li> 
		     		 <li>${data[i].phone}</li>
		     		 <li>${data[i].jiguan}</li>
		     		 <li>${data[i].jianjie}</li>
		     		 <li>${data[i].time}</li>
		     		 <li> <a class = "a1">修改<a/>
		     		 	 	<a class="a2">删除<a/>
		     		 	 	</li>
		     		 </ul>` 	       
   }
   下面的正戏增删改查什么的 很多都是同学的灵感  自己真的想不上去 对了还有老师的不懈努力跟我改了一个半小时的BUG.

## 完整的JS代码
var data =[
	  
  	{"name":"jike","sex":"男","age":17,"phone":18086297713,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2013.02.18"},  	
  	{"name":"jike1","sex":"女","age":16,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2012.02.18"},
  	{"name":"jike2","sex":"男","age":18,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2008.02.18"},
  	{"name":"jike3","sex":"女","age":60,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2006.02.18"},
  	{"name":"jike4","sex":"男","age":20,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2009.02.18"},
  	{"name":"jike5","sex":"女","age":13,"phone":18086542687,"jiguan":"湖北武汉","jianjie":"一个好人","time":"2013.02.18"},
  	{"name":"吴优","sex":"男","age":10,"phone":383843844944,"jiguan":"湖北孝感","jianjie":"一只单身狗","time":"2020.06.06"}
]
var all = document.getElementById("all");
var div1 =document.getElementsByClassName("div1")[0];
var ul=document.getElementsByClassName("ul1");
var a1=document.getElementsByClassName("a1");
var a2=document.getElementsByClassName("a2");
var a3=document.getElementById("a3");
var push=document.getElementsByClassName("push")[0];
var change=document.getElementById("change");
var clear=document.getElementsByClassName("clearbtn")[0];
var del=document.getElementById("delete"); 
var chbs = div1.getElementsByTagName("input");
var selectALL = ul[0].getElementsByTagName("input")[0];
var children=push.children;
var newchildren=[];
//增加
var jia=document.getElementsByClassName("jia")[0];
var insert=document.getElementsByClassName("insert")[0];
var change1=document.getElementById("change1");
var clearbtn2=document.getElementsByClassName("clearbtn2")[0];
var a4=document.getElementById("a4");
var children1=jia.children;
var newChildren=[];
 for(let j=0;j<children.length;j++){
 	    if(children[j].localName == "input"){
 	    	 newchildren.push(children[j]);
 	    }	   
 }
 for(let j=0;j<children1.length;j++){
 	    if(children1[j].localName == "input"){
 	    	 newChildren.push(children1[j]);
 	    }	   
 }
  var str =[];
  for(var key in data[0]){  //拿到data数据里面的属性名
  	 str.push(key)
  }
  console.log(str);
wendang();
 function wendang(){ 
   	  div1.innerHTML="";
   	  selectALL.checked = false;
   for(let i=0; i<data.length;i++){
   	       div1.innerHTML +=`<ul class="ul1"><li class="ipt"><input type="checkbox" onclick = "fun(this)"/></li>
   	   				<li>${data[i].name}</li>
		     		 <li>${data[i].sex}</li>
		     		 <li>${data[i].age}</li> 
		     		 <li>${data[i].phone}</li>
		     		 <li>${data[i].jiguan}</li>
		     		 <li>${data[i].jianjie}</li>
		     		 <li>${data[i].time}</li>
		     		 <li> <a class = "a1">修改<a/>
		     		 	 	<a class="a2">删除<a/>
		     		 	 	</li>
		     		 </ul>` 	       
   }
   
   //删除    
   for(let i=0; i<a2.length;i++){
   	       a2[i].onclick =function(){
   	       	    del.style.display="block";  	       	    
   	       	     var sure=document.getElementById("btn1");
   	       	     var quxiao=document.getElementById("btn2");
   	       	     sure.onclick=function(){
   	       	     	   data.splice(i,1);
   	       	     	   wendang();
   	       	     	   del.style.display="none";
   	       	     	   console.log(i);
   	       	     }
   	       	     quxiao.onclick=function(){
   	       	     	 del.style.display="none";
   	       	     }
   	       };  
   }
   //修改
    for(let i=0;i<a1.length;i++){
    	  a1[i].onclick=function(){
    	   for(let j = 1;j<this.parentElement.parentElement.children.length-2;j++){
    	   	  console.log(this.parentElement.parentElement.children[j]);
    	   newchildren[j-1].value=this.parentElement.parentElement.children[j].innerText;
    	   }
    	       push.style.display="block";	       
  	       change.onclick = function(){
  	        for(let k=0; k<newchildren.length; k++){
  	           data[i][str[k]]=newchildren[k].value;
  	        }
	         wendang();  
  	         push.style.display="none";
  	       }
  	        clear.onclick=function(){
  	        	  for(let i =0;i<newchildren.length; i++){
  	        	  		newchildren[i].value="";
  	        	  }
  	        }
    	     a3.onclick=function(){
    	  	 push.style.display="none";
    	  }
    	}
    }
 }     
//增  
   insert.onclick=function(){
   	       jia.style.display="block";
   	       change1.onclick=function(){
   	       			  wendang();
   	       		  var NewArr = [];
   	       	    for(let i =0; i<newChildren.length;i++){
   	       	    	  NewArr.push(newChildren[i].value)
   	       	    }
   	       	    var obj={};
   	       	    for(let j=0;j<str.length; j++){
   	       	    	  obj[str[j]] =NewArr[j];
   	       	    }
   	       	   data.push(obj);
   	       	   wendang();
   	       	   jia.style.display="none";
   	       }
   	       	 clearbtn2.onclick=function(){
  	        	  for(let i =0;i<newChildren.length; i++){
  	        	  		newChildren[i].value="";
  	        	  }	
  	        }
    	     a4.onclick=function(){
    	  	jia.style.display="none";
    	  }
   	       
   }
 //全选 
   //全选 和全不选
   // 找到ulli第一个th中的input,为其绑定单击事件
       selectALL.onclick=function(){
       	console.log(chbs,selectALL)
       	// 获取所有的页面里面所有的input      	
       	        for(let i= 0; i< chbs.length; i++){
       	        		// 让每一个chb的状态都跟chbAll得状态一样
       	        	  chbs[i].checked = this.checked;
										console.log(chbs[i].checked)
       	        }
       }
       console.log(selectALL)
       
     //单个选中取消操作
   for(let i=0; i<chbs.length; i++){  
   	     chbs[i].onclick= fun1
   	    
   }
   function fun(ele){
   	     	// 如果当前chb未选中
   	     	        if(!ele.checked){
   	     	        	// chbAll修改为未选中

   	     	        	   selectALL.checked=false;
   	     	        }else{
   	     	        	// 否则
   	     	        	// 获得ull input所有第一个td中的未选中的input unSel
// 	     	        	 var unsel=document.querySelectorAll("ul>li input:not(:checked");   	    
										 	var sum = 0;
											for(var j = 0;j<chbs.length;j++){
												if(chbs[j].checked == false){
														console.log(chbs[j])
														sum++
												}
										}
										
   	     	        	 if(sum == 0){
   	     	        	 	selectALL.checked=true;
   	     	        	 }else{
   	     	        	 	selectALL.checked=false;
   	     	        	 	sum = 0
   	     	        	 }
   	     	        }
   	     	        
   	     }
    function fun1(){
   	     	// 如果当前chb未选中
   	     	        if(!this.checked){
   	     	        	// chbAll修改为未选中
   	     	        	   selectALL.checked=false;
   	     	        }else{
   	     	        	// 否则
   	     	        	// 获得ull input所有第一个td中的未选中的input unSel
// 	     	        	 var unsel=document.querySelectorAll("ul>li input:not(:checked");   	    
										 	var sum = 0;
											for(var j = 0;j<chbs.length;j++){
												if(chbs[j].checked == false){
														console.log(chbs[j])
														sum++
												}
										}
   	     	        	 if(sum == 0){
   	     	        	 	selectALL.checked=true;
   	     	        	 }else{
   	     	        	 	selectALL.checked=false;
   	     	        	 	sum = 0
   	     	        	 }
   	     	        }
   	     	        
   	     }
// function fun1(){
// 
// }
  //但选删除和全选删除
var Delete=document.getElementsByClassName("Delete")[0];
   Delete.onclick=function(){   	    	        	         	     	         
   	        if(selectALL.checked==true){
   	        	  data.splice(0,data.length);
   	        	  wendang()
   	        	  selectALL.checked=false
   	        }else{
   	        	  for(let i =0,a=0; i<chbs.length; i++){
   	        	  	    if(chbs[i].checked){
   	        	  	    	     data.splice(a,1);
   	        	  	    	     a--;
   	        	  	    }
   	        	  	   a++;
   	        	  	    
   	        	  }
   	        	  wendang();
   	        }
   }
//查询
var chaxun=document.getElementsByClassName("select")[0];
var sex=document.getElementById("sex");
var names=document.getElementById("name");
var iphone=document.getElementsByClassName("phoneNum")[0];
//性别查询
 var data1=data;
 sex.onchange = function(){
 	     if(this.selectedIndex==0){
 	     	console.log(this.selectedIndex);
 	     	  data=data1;
 	     	   wendang();
 	     	  return
 	     }
 	     data=data1
 	     var arrsex=[]
 	     var index=this.selectedIndex;
 	     index = (index ==1?"男":"女");
 	     for(let i = 0; i<data.length; i++){
 	     	if(data[i]["sex"]==index){
 	     		  arrsex.push(data[i])
 	     	}
 	     }
 	     data=arrsex;
 	     wendang();
 }
//姓名查询
  var data2=data;
  var name1=names.children[0];
  var iphone1=iphone.children[0];
  chaxun.onclick=function(){
  console.log(name1.value,iphone1.value)
  	   var newname=[],newiphone=[];
  	   if((name1.value && !iphone1.value) ||(!name1.value && iphone1.value)){
  	   	 console.log(222)
  	   	   let a=0;
  	   	   for(let i = 0;i<data.length; i++){
  	   	   	   if(data[i]["name"] == name1.value || data[i]["phone"] == iphone1.value)
  	   	   	    newname.push(data[i])
  	   	   	    a++;
  	   	   }if(a==0){//给一个变量,如果变量没有进入了循环中则说明输入错误
  	   	   	   	alert("输入错误信息请重新输入")
  	   	   	    name1.value="";
  	   	   	    iphone1.value="";
  	   	   	    return;
  	   	   } 
  	   	   data=newname;
  	   	   wendang();
  	   }else if(name1.value && iphone1.value){
  	   	 console.log(333)
  	   	  		let a = 0;
  	   	  		for(let j = 0; j<data.length; j++){
  	   	  			  if(data[j]["name"]==name1.value && data[j]["phone"] == iphone1.value)
  	   	  			   newname.push(data[j]);
  	   	  			   a++
  	   	  		}if( a == 0){
  	   	  				alert("输入错误信息请重新输入")
  	   	   	    name1.value="";
  	   	   	    iphone1.value="";
  	   	   	     return;
  	   	  		}
  	   	  data=newname;
  	   	   wendang();
  	   }else{
  	   	 data =data2;
  	   	 wendang();
  	   }
  }
//年龄排序
 var agesort1=document.getElementById("agesort");
	var data4  = [],arrAge = [];
for(let i = 0;i<data.length; i++){
	    arrAge.push(data[i]["age"]);
	    data4.push(data[i]);
}
console.log(data4,arrAge);
 agesort1.onchange=function(){
 	   var del= [];
 	   var indexs= this.selectedIndex;
 	   console.log(indexs)
 	   if(indexs==0){
 	   	      data=data4;
 	   	       wendang();
 	   }else if(indexs == 1){//升序
 	   	     arrAge.sort(function(a,b){return b-a});
 	   	     for(let j = 0; j < arrAge.length; j++){
 	   	     	  for(let k = 0; k < data.length; k++){
 	   	     	  	 if(arrAge[j] == data[k]["age"]){
 	   	     	  	 	    del = data.splice(k,1);
 	   	     	  	 	    data= data.concat(del);
 	   	     	  	 }
 	   	     	  }
 	   	     }wendang();
 	   }else{
 	   	     arrAge.sort(function(a,b){return a-b});   	    
 	   	     for(let j = 0; j < arrAge.length; j++){
 	   	     	  for(let k = 0; k < data.length; k++){
 	   	     	  	 if(arrAge[j] == data[k]["age"]){
 	   	     	  	 	    del=data.splice(k,1);
 	   	     	  	 	    data=data.concat(del);
 	   	     	  	 }
 	   	     	  }
 	   	     }
 	   	     	   console.log(123);
 	   	     wendang();
 	   }   
 }
//入职排序
var tiems=document.getElementById("times");
var data5=[],Arrtime=[];
for(let i = 0; i<data.length; i++){   
	   Arrtime.push(Date.parse(data[i]["time"]));   //parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。
	   data5.push(data[i])
}
console.log(data5,Arrtime);
tiems.onchange=function(){
	        var del=[];
	        var indexs=this.selectedIndex;
	        if(indexs == 0){
	        	 data=data5;
	        	 wendang()
	        }else if(indexs ==1){
	        	   Arrtime.sort(function(a,b){return b - a})
	        	   for(let i = 0; i<Arrtime.length; i++){
	        	   	for(let j = 0; j < data.length; j++){
	        	   		  if(Arrtime[i] ==Date.parse(data[j]["time"])){
	        	   		  	    del =data.splice(j,1);
	        	   		  	    data=data.concat(del)
	        	   		  }
	        	   	}
	        	   }wendang()
	        	   
	        }else{
	        	     Arrtime.sort(function(a,b){return a-b})
	        	     	 for(let i = 0; i <Arrtime.length; i++)
	        	     	 for(let j = 0; j <data.length; j++){
	        	     	 	 if(Arrtime[i] == Date.parse(data[j]["time"])){
	        	     	 	 	 del=data.splice(j,1);
	        	     	 	 	 data=data.concat(del);
	        	     	 	 }
	        	     	 }
	        	     }   wendang();
	           

}
抱歉HTML+CSS没有     
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值