首页 > 其他分享 >jQuery(练习2添加删除表格记录,含原生对照)

jQuery(练习2添加删除表格记录,含原生对照)

时间:2023-01-13 23:44:06浏览次数:57  
标签:jQuery 原生 trNode 表格 appendChild var document email Delete

视频

原生

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>添加删除记录练习</title>
	<link rel="stylesheet" type="text/css" href="css.css" />
</head>
<body>

	<table id="employeeTable">
		<tr>
			<th>Name</th>
			<th>Email</th>
			<th>Salary</th>
			<th>&nbsp;</th>
		</tr>
		<tr>
			<td>Tom</td>
			<td>[email protected]</td>
			<td>5000</td>
			<td><a href="deleteEmp?id=001">Delete</a></td>
		</tr>
		<tr>
			<td>Jerry</td>
			<td>[email protected]</td>
			<td>8000</td>
			<td><a href="deleteEmp?id=002">Delete</a></td>
		</tr>
		<tr>
			<td>Bob</td>
			<td>[email protected]</td>
			<td>10000</td>
			<td><a href="deleteEmp?id=003">Delete</a></td>
		</tr>
	</table>

	<div id="formDiv">
	
		<h4>添加新员工</h4>

		<table>
			<tr>
				<td class="word">name: </td>
				<td class="inp">
					<input type="text" name="empName" id="empName" />
				</td>
			</tr>
			<tr>
				<td class="word">email: </td>
				<td class="inp">
					<input type="text" name="email" id="email" />
				</td>
			</tr>
			<tr>
				<td class="word">salary: </td>
				<td class="inp">
					<input type="text" name="salary" id="salary" />
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<button id="addEmpButton" value="abc">
						Submit
					</button>
				</td>
			</tr>
		</table>

	</div>

	<script type="text/javascript">
		/*
		 功能说明:
			 1. 点击'Submit', 根据输入的信息在表单中生成一行员工信息
			 2. 点击Delete链接, 提示删除当前行信息, 点击确定后删除信息
		 技术要点:
			 1. DOM查询
			 2. 绑定事件监听
			 3. DOM增删改
			 5. 取消事件的默认行为
		 */
		function removeTr(){
			var trNode = this.parentNode.parentNode;
			var tds = trNode.getElementsByTagName("td");
			var nameStr = tds[0].firstChild.nodeValue;
			var flag = confirm("真的要删除" + nameStr + "的信息吗?");
			if(flag){
				trNode.parentNode.removeChild(trNode);
			}

			return false;
		}

		window.onload = function(){
			//目标1:点击Delete删除记录
			var aEles = document.getElementsByTagName("a");
			for(var i = 0;i < aEles.length;i++){
				aEles[i].onclick = removeTr;
			}

			//目标2:点击Submit增加记录
			var subBtn = document.getElementById("addEmpButton");
			subBtn.onclick = function(){
				var nameText = trim(document.getElementById("empName").value);
				var emailText = trim(document.getElementById("email").value);
				var salaryText = trim(document.getElementById("salary").value);

				document.getElementById("empName").value = nameText;
				document.getElementById("email").value = emailText;
				document.getElementById("salary").value = salaryText;

				if(nameText == "" || emailText == "" || salaryText == ""){
					alert("您输入的内容不完整");
					return ;
				}

				//组装节点
				var nameTd = document.createElement("td");
				nameTd.appendChild(document.createTextNode(nameText));
				var emailTd = document.createElement("td");
				emailTd.appendChild(document.createTextNode(emailText));
				var salaryTd = document.createElement("td");
				salaryTd.appendChild(document.createTextNode(salaryText));
				var aTd = document.createElement("td");
				var aNewEle = document.createElement("a");
				aNewEle.href = "deleteEmp?id=XXX";
				aNewEle.appendChild(document.createTextNode("Delete"));
				aNewEle.onclick = removeTr;
				aTd.appendChild(aNewEle);

				var trNode = document.createElement("tr");
				trNode.appendChild(nameTd);
				trNode.appendChild(emailTd);
				trNode.appendChild(salaryTd);
				trNode.appendChild(aTd);

				var empTable = document.getElementById("employeeTable");
				empTable.appendChild(trNode);
			}

			function trim(str){
				var reg = /^\s*|\s*$/g;
				return str.replace(reg,"");
			}
		}
	</script>
</body>
</html>

jQuery

event.preventDefault()Event 接口的 preventDefault()方法,告诉user agent:如果此事件没有被显式处理,它默认的动作也不应该照常执行。此事件还是继续传播,除非碰到事件侦听器调用stopPropagation() 或stopImmediatePropagation(),才停止传播。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>添加删除记录练习</title>
  <link rel="stylesheet" type="text/css" href="css.css"/>
</head>
<body>

<table id="employeeTable">
  <tr>
    <th>Name</th>
    <th>Email</th>
    <th>Salary</th>
    <th>&nbsp;</th>
  </tr>
  <tr>
    <td>Tom</td>
    <td>[email protected]</td>
    <td>5000</td>
    <td><a href="deleteEmp?id=001">Delete</a></td>
  </tr>
  <tr>
    <td>Jerry</td>
    <td>[email protected]</td>
    <td>8000</td>
    <td><a href="deleteEmp?id=002">Delete</a></td>
  </tr>
  <tr>
    <td>Bob</td>
    <td>[email protected]</td>
    <td>10000</td>
    <td><a href="deleteEmp?id=003">Delete</a></td>
  </tr>

</table>

<div id="formDiv">

  <h4>添加新员工</h4>

  <table>
    <tr>
      <td class="word">name:</td>
      <td class="inp">
        <input type="text" name="empName" id="empName"/>
      </td>
    </tr>
    <tr>
      <td class="word">email:</td>
      <td class="inp">
        <input type="text" name="email" id="email"/>
      </td>
    </tr>
    <tr>
      <td class="word">salary:</td>
      <td class="inp">
        <input type="text" name="salary" id="salary"/>
      </td>
    </tr>
    <tr>
      <td colspan="2" align="center">
        <button id="addEmpButton" value="abc">
          Submit
        </button>
      </td>
    </tr>
  </table>
</div>

<script src="jquery-1.10.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
  /*
   功能说明:
   1. 点击'Submit', 根据输入的信息在表单中生成一行员工信息
   2. 点击Delete链接, 提示删除当前行信息, 点击确定后删除信息
   技术要点:
   1. DOM查询
   2. 绑定事件监听
   3. DOM增删改
   4. 取消事件的默认行为
   */
  $(function () {
    $('#addEmpButton').click(function () {
      //1.收集输入的数据
      var $empName = $('#empName')
      var $email = $('#email')
      var $salary = $('#salary')

      var empName = $empName.val()
      var email = $email.val()
      var salary = $salary.val()
      var id = Date.now()//随机数

      //2.生成对应的<tr>标签结构,并插入#employeeTable的tbody中
      /*
       <tr>
         <td>Bob</td>
         <td>[email protected]</td>
         <td>10000</td>
         <td><a href="deleteEmp?id=003">Delete</a></td>
       </tr>
       */
      $('<tr></tr>')
        .append('<td>'+empName+'</td>')//拼串
        .append('<td>'+email+'</td>')
        .append('<td>'+salary+'</td>')
        .append('<td><a href="deleteEmp?id='+id+'">Delete</a></td>')
        .appendTo('#employeeTable')
        .find('a')
        .click(clickA)//给a标签加点击监听,阻止自带的行为
      
      //3.清除
      $empName.val('')
      $email.val('')
      $salary.val('')

    })
    //给所有删除链接绑定点击监听
    $('a').click(clickA)

    function clickA (event) {
      event.preventDefault()
      var $tr = $(this).parent().parent()
      var name = $tr.children('td:first').html()
      if(confirm('确定删除'+name+'吗?')) {
        $tr.remove()
      }
    }
  })


</script>
</body>
</html>

效果展示

标签:jQuery,原生,trNode,表格,appendChild,var,document,email,Delete
From: https://www.cnblogs.com/chuixulvcao/p/17050814.html

相关文章

  • jQuery入门
    jQuery入门1、基础语法jQuery语法是通过选取HTML元素,并对选取的元素执行某些操作。基础语法:$(selector).action()美元符号定义jQuery选择符(selector)"查询"和"查......
  • jQuery基础
    一、jQuery的产生它的作者是JohnResig,于2006年创建的一个开源项目jQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一整套定义好的方法jQu......
  • jQuery进阶
    一、jQuery动画1.1jQuery的显示和隐藏jQuery中显示方法为.show(),隐藏方法为.hide()。在无参数的时候,只是硬性的显示内容和隐藏内容在.show()和.hide()......
  • 原生GIT版本服务器配置和测试
    前言:原生GIT版本服务器指使用Linux内核自带的GIT软件来构建版本服务器,而不采用Git-lab、SCM-Manager等非Linux原生系统。本文提供原生GIT安装、配置、测试和安全性设置。以......
  • 新一代云原生日志架构 - Loggie的设计与实践
    Loggie萌芽于网易严选业务的实际需求,成长于严选与数帆的长期共建,持续发展于网易数帆与网易传媒、中国工商银行的紧密协作。广泛的生态,使得项目能够基于业务需求不断完善、......
  • 如何在前端实现十万行数据的表格秒级响应?
    在前端实现十万行数据的表格秒级响应可能需要一些技巧和优化。分页:将数据分成多个页面,只在当前页面显示数据,从而减少浏览器的内存占用。懒加载:使用懒加载技术,只在用......
  • 如何一键更新CAD表格中的数据?
    在浩辰CAD中用自动增强表格中创建表格命令创建好表格后,如果需要更新CAD表格中的数据,该如何操作呢?本文小编就来给大家分享一下浩辰CAD软件中一键更新CAD表格数据的具体操作......
  • 从 Nginx Ingress 窥探云原生网关选型
    现今有越来越多的企业开始采纳云原生理念进行应用架构转型。而K8s和微服务是云原生的两大支柱,随着云原生浪潮而被广泛应用。 对多数应用而言,提供对外服务的使命并不......
  • 从 Nginx Ingress 窥探云原生网关选型
    现今有越来越多的企业开始采纳云原生理念进行应用架构转型。而K8s和微服务是云原生的两大支柱,随着云原生浪潮而被广泛应用。 对多数应用而言,提供对外服务的使命并不......
  • 从 Nginx Ingress 窥探云原生网关选型
    现今有越来越多的企业开始采纳云原生理念进行应用架构转型。而K8s和微服务是云原生的两大支柱,随着云原生浪潮而被广泛应用。 对多数应用而言,提供对外服务的使命并不......