zoukankan      html  css  js  c++  java
  • 通过 js 对表格进行更删减改

    效果图:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>无标题文档</title>
    <!--<script type="text/javascript" src="js/index.js"></script>-->
    </head>
    
    <body>
    	<center>
    		<table id="tab" border="1">
    			<tr>
    				<th width="25%">年级</th>
    				<th width="25%">性别</th>
    				<th width="25%">姓名</th>
    				<th width="25%">操作</th>
    			</tr>
    			<tr>
    				<td></td>
    				<td></td>
    				<td></td>
    				<td>
    				<button>编辑</button>
    				<button>删除</button>
    				</td>
    			</tr>
    		</table>
    		<button id="but">添加</button>
    	</center>
    </body>
    </html>
    
    <script>
    var but=null;	//添加按钮
    var tab=null;	//表格
    var n=0;		//行标志
    var dd = null;	//定义一个变量 存所有的td
    var thLength = 0;//thLength是th标签的个数
    
    window.onload = function(){
    	//初始化
    	tabInit();
    	//添加行
    	addRows();
    }
    
    /*
    功能:初始化按钮和表格对象
    参数:
    返回值:
    */
    function tabInit(){
    	//添加按钮  点击调用addRows方法添加一行
    	but=document.getElementById("but");
    	but.addEventListener("click",addRows);
    	
    	//表格  用来追加行的
    	tab=document.getElementById("tab");
    	//添加表格的属性  宽度  边框 点击事件
    	tab.setAttribute("width","50%");
    	tab.setAttribute("border","1");
    	thLength = document.getElementsByTagName("th").length;
    }
    /*
    功能:创建tr  td  放到表格里面
    参数:
    返回值:
    */
    function addRows(){
    	n++;//做标记删除按钮和行的关联标记
    	//创建tr 一会放到表格
    	var trdom=document.createElement("tr");
    	var tddom="";//创建td  一会放到tr里面
    	var czdom="";//创建删除按钮  一会放到一行最后一个td
    	//thLength是th标签的个数
    	for(var i=0;i<thLength;i++){
    		tddom=document.createElement("td");
    		//最后一个单元格里面有一个删除按钮
    		if(i == thLength-1){
    			czdom=document.createElement("button");
    			czdom.innerHTML="删除";
    			//添加标识  和行相关联 64行
    			czdom.setAttribute("flage",n);
    			//点击事件
    			czdom.addEventListener("click",del);
    			//将按钮放到td里面
    			tddom.appendChild(czdom);
    			//设置居中 同时用来判断是否添加单元格事件
    			tddom.style.textAlign="center";
    		}
    		//将td 放到 tr 里面
    		trdom.appendChild(tddom);
    	}
    	//设置tr的属性和这一行的删除按钮相关联 52行
    	trdom.setAttribute("flage",n);
    	//将ttr放到 tab里面
    	tab.appendChild(trdom);
    
    //	****************** 
    //	给每个单元格添加事件 
    //	******************
    	//获取所有的td
    	dd = document.getElementsByTagName("td"); 
    	//给所有的td加上点击事件
    	for(var j=0;j<dd.length;j++){
    		dd[j].addEventListener("click",addclick); 
    	}
    }
    /*
    功能:td点击事件,将内容提换为文本框
    参数:
    返回值:
    */
    function addclick(evt){
    	var tdObj = this;//被点击的那个td对象
    	var tdStr = "";//用来存td里面的内容 放到文本框中
    	//判断是最后一个td就结束方法
    	if(tdObj.style.textAlign != ""){
    		return;
    	}
    	//获取td里面的内容  将内容给文本框
    	tdStr = tdObj.innerHTML;
    	tdObj.innerHTML = '<input type="text" value="'+tdStr+'" onBlur="xiaoshi(this)"  style="border: none">';
    //	设置当前操作的td属性 
    //	文本框时区焦点将文本框的值给td 
    //	为了定位到正在操作的td
    	tdObj.setAttribute("selTd","sel");
    	//删除事件 防止和文本框冲突
    	for(var l=0;l<dd.length;l++){
    		dd[l].removeEventListener('click',addclick); 
    	}
    }
    /*
    功能:文本框失去焦点 文本框消失
    参数:  文本框对象
    返回值:
    */
    function xiaoshi(obj){
    	//获取到文本框的内容
    	var val = obj.value;
    	//将这个文本框删除 td清空
    	obj.remove();
    
    	//将文本框的内容给td  找到所有td
    	dd = document.getElementsByTagName("td"); 
    	for(var i = 0; i<dd.length;i++){
    		//通过selTd 属性判断当前正在操作的td
    		if(dd[i].getAttribute("selTd") == "sel"){
    //			将文本框的内容给td
    			dd[i].innerHTML = val;
    //			将 属性selTd 删除  保证唯一性
    			dd[i].removeAttribute("selTd");
    		}
    	}
         //给所有的td加上点击事件
    	for(var j=0;j<dd.length;j++){
    		dd[j].addEventListener("click",addclick); 
    	}
    }
    /*
    功能:点击删除将本行删除
    参数:
    返回值:
    */
    function del(){  //
    	var btnObj = this;//btnObj是删除按钮 对象
    	var num=btnObj.getAttribute("flage");
    	var trarr=document.getElementsByTagName("tr");
    	for(var a in trarr){
    		if(trarr[a].getAttribute("flage") == num){
    			trarr[a].remove();
    		}
    	}
    }
    </script>
    

      

  • 相关阅读:
    tomcat8.5.57源码阅读笔记2
    tomcat8.5.57源码阅读笔记1
    KVM openstack
    爬虫进阶版
    react 之setChild子组件传值父组件
    Linux找死锁、cpu100%
    Java定时任务
    Java工具类HttpUtil
    Java后台远程下载url文件并远程上传文件
    jQuery上传文件
  • 原文地址:https://www.cnblogs.com/1301694f/p/8338914.html
Copyright © 2011-2022 走看看