资讯详情

原生js实现的动态生成表格数据、添加数据、删除数据

今天间利用今天的周末jQuery添加和删除表格数据javascript来实现.添加数据的重写非常顺利删除表格数据重写有点麻烦,第一次生成的数据删除没有问题,但后期添加的数据在删除时没有反应。 查了很多资料,想用js实现jQuery的on()监控方法,结果学习技能不好,原理不太理解,跌跌撞撞的实现,效果不令人满意,代码更多,点击第一次,没有反应,必须点击两次删除。由于气泡,确认对话框也出现了两次。 后来,它被用来防止气泡,并确认对话框最终只弹出一次。然后我突然想起了事件代理,所以我没有把监控放在每个删除的超链接上,而是放在了tbody上,使用e.target ,效果好,代码简单,达到预期目的。 该代码实现了以下功能: 1.从数组读取数据生成表中开始呈现的数据; 2.点击添加数据按钮弹出添加数据窗口; 3.输入姓名、朝代、事迹,点击添加 4.点击删除删除银行数据。 完整代码如下:

<!DOCTYPE html> <html>  <head>   <meta charset="utf-8">   <title>动态生成表格数据,添加数据,删除数据</title>   <style type="text/css">    .wrap { 
            width: 800px;     margin: 30px auto 0;    }    a { 
            text-decoration: none;     color: #fa4500;    }        a:hover { 
            text-decoration: underline;    }    table { 
            margin: 1rem auto;    }    table,td,th { 
            border: 1px solid #ccc;     border-collapse: collapse;     text-align: center;    }    th { 
            width: 150px;     height: 40px;     background-color: #23C6D9;     color: #fff;    }    .w500{ 
            width: 300px;    }    td { 
            height: 30px;
				color: #333;
			}
			.mask { 
       
				position: absolute;
				top: 0px;
				left: 0px;
				width: 100%;
				height: 100%;
				background-color: rgba(0, 0, 0, 0.15);
				display: none;
			}
			.form-item { 
       
				height: 100%;
				position: relative;
				padding-left: 100px;
				padding-right: 20px;
				margin-bottom: 34px;
				line-height: 36px;
			}
			
			.form-item>.lb { 
       
				position: absolute;
				left: 0;
				top: 0;
				display: block;
				width: 100px;
				text-align: right;
			}
			.form-item>.txt { 
       
				width: 300px;
				height: 32px;
			}
			
			.form-add { 
       
				position: fixed;
				top: 30%;
				left: 50%;
				margin-left: -197px;
				padding-bottom: 20px;
				background: #fff;
				display: none;
			}
			.form-add-title { 
       
				background-color: #f7f7f7;
				border-width: 1px 1px 0 1px;
				border-bottom: 0;
				margin-bottom: 15px;
				position: relative;
			}
			
			.form-add-title span { 
       
				width: auto;
				height: 18px;
				font-size: 16px;
				font-family: "Microsoft YaHei";
				font-weight: bold;
				color: rgb(102, 102, 102);
				text-indent: 12px;
				padding: 8px 0px 10px;
				margin-right: 10px;
				display: block;
				overflow: hidden;
				text-align: left;
			}
			
			.form-add-title div { 
       
				width: 16px;
				height: 20px;
				position: absolute;
				right: 10px;
				top: 6px;
				font-size: 30px;
				line-height: 16px;
				cursor: pointer;
			}
			
			.form-submit { 
       
				text-align: center;
			}
			
			.form-submit input { 
       
				width: 170px;
				height: 32px;
			}
			
		</style>
	</head>
	<body>
		<div class="wrap">
		<div>
			<input type="button" value="添加数据" id="addData" class="btnAdd">
		</div>
		<table>
			<tbody>
				<tr>
					<th>姓名</th>
					<th>朝代</th>
					<th class="w500">事迹</th>
					<th>操作</th>
				</tr>
			</tbody>
		</table>
			</div>
			<div id="mask" class="mask"></div>
			<!--遮罩层-->
			<div id="formAdd" class="form-add">
				<div class="form-add-title">
					<span>添加数据</span>
					<div id="hideFormAdd">x</div>
				</div>
				<div class="form-item">
					<label class="lb" for="txtName">姓名:</label>
					<input class="txt" type="text" id="txtName" placeholder="请输入姓名">
				</div>
				<div class="form-item">
					<label class="lb" for="txtDynasty">朝代:</label>
					<input class="txt" type="text" id="txtDynasty" value="">
				</div>
				<div class="form-item">
					<label class="lb" for="txtDeeds">事迹:</label>
					<input class="txt" type="text" id="txtDeeds" value="">
				</div>
				<div class="form-submit">
					<input type="button" value="添加" id="btnAdd">
				</div>
			</div>
		<script type="text/javascript">
			var datas = [{ 
       
					name: "刘徽",
					dynasty: '魏晋',
					deeds: '《九章算术注》',
				}, { 
       
					name: "祖冲之",
					dynasty: '南北朝',
					deeds: '圆周率',
				},
				{ 
       
					name: "秦九韶",
					dynasty: '南宋',
					deeds: '《数书九章》',
				}
			];
			var tbody = document.querySelector('tbody');
			for (var i = 0; i < datas.length; i++) { 
        //行
				var row = document.createElement('tr');
				tbody.appendChild(row);
				for (var k in datas[i]) { 
        //列的前3个单元格
					var cell = document.createElement('td');
					cell.innerHTML = datas[i][k];
					row.appendChild(cell);
				}
				cell2=document.createElement('td');//最后的单元格
				cell2.innerHTML="<a href='javascript:;'>删除</a>";
				row.appendChild(cell2);
			}
			//显示隐藏
			var addData = document.querySelector('#addData');
			var mask = document.querySelector('#mask');
			var formAdd = document.querySelector('#formAdd');
			var hideFormAdd = document.querySelector('#hideFormAdd');
			addData.addEventListener('click', function() { 
       
				mask.style.display = 'block';
				formAdd.style.display = 'block';
			})
			hideFormAdd.addEventListener('click', function() { 
       
				mask.style.display = 'none';
				formAdd.style.display = 'none';
			})
			
			//添加操作
			var btnAdd = document.querySelector('#btnAdd');
			btnAdd.addEventListener('click', function() { 
       
				var name = document.querySelector('#txtName').value;
				var dynasty = document.querySelector('#txtDynasty').value;
				var deeds=document.querySelector('#txtDeeds').value;
				var tr = document.createElement('tr');
				tr.innerHTML = '<td>' + name + '</td><td>' + dynasty + '</td><td>'+deeds+'</td><td>'+'<a href="javascript:;" >删除</a></td>';
				tbody.appendChild(tr);
				mask.style.display = 'none';
				formAdd.style.display = 'none';
				document.querySelector('#txtName').value = '';
				document.querySelector('#txtDynasty').value = '';
				document.querySelector('#txtDeeds').value = '';
			})
			
			//删除操作,利用事件委托原理,监听tbody,触发事件的元素是e.target
			tbody.addEventListener('click', function(e) { 
       
				var dels = tbody.querySelectorAll('a');
				for (let i = 0; i < dels.length; i++) { 
       
					if (e.target == dels[i]) { 
       
						var flag = confirm("你确定要删除吗?");
						var trCur = e.target.parentNode.parentNode;
						if (flag) { 
       
							tbody.removeChild(trCur);
						}
					}
				}
			})
		</script>
	</body>
</html>

标签: 高压电阻器5w500m

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台