03.添加删除记录练习-a的索引问题.html 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script>
  9. // //删除tr的响应函数
  10. // function delA() {
  11. // // alert("hello");
  12. // //点击超链接以后,需要删除超链接所在的那一行
  13. // //这里我们点击哪个超链接,this就是谁
  14. // // alert(this);
  15. // //获取当前tr
  16. // var tr = this.parentNode.parentNode;
  17. // //获取要删除的员工的名字
  18. // // var name = tr.getElementsByTagName("td")[0].innerHTML;
  19. // var name = tr.children[0].innerHTML;
  20. // //删除之前弹出一个提示框
  21. // /**
  22. // * confirm()用于弹出一个带有确认和取消按钮的提示框
  23. // * 需要一个字符串作为参数,该字符串将会作为提示文字显示出来
  24. // * 如果用户点击确认则会返回true,如果点击取消则返回false
  25. // */
  26. // var flag = confirm("确认删除" + name + "吗?");
  27. // // alert(flag);
  28. // if (flag) {
  29. // //删除tr
  30. // tr.parentNode.removeChild(tr);
  31. // };
  32. // /**
  33. // * 点击超链接以后,超链接会跳转页面,这个是超链接的默认行为
  34. // * 但是此时我们不希望出现默认行为,
  35. // * 可以通过在相应函数的最后return false来取消默认行为
  36. // * 或者将超链接的diam改为下面的代码也可以:
  37. // * <td><a href="javascript:;">Delete</a></td>
  38. // */
  39. // return false;
  40. // };
  41. window.onload = function () {
  42. /**
  43. * 点击超链接以后,删除一个员工的信息
  44. */
  45. //获取所有的超链接
  46. var allA = document.getElementsByTagName("a");
  47. //为每个超链接都绑定一个单击响应函数
  48. for (var i = 0; i < allA.length; i++) {
  49. /*
  50. for循环会在页面加载完成之后立即执行
  51. 而响应函数会在超链接被点击时才执行
  52. 当响应函数执行时,for循环早已执行完毕
  53. */
  54. alert("for循环正在执行"+i);
  55. allA[i].onclick = function () {
  56. alert("响应函数正在执行"+i);
  57. // alert(allA[i] == this);//false
  58. // alert(allA[i]);//undefined
  59. alert(i);//输出的结果为3,已经超过最大长度的索引
  60. return false;
  61. };
  62. };
  63. //代码修改后,可以写成下面的格式
  64. // for (var i = 0; i < allA.length; i++) {
  65. // allA[i].onclick = delA;
  66. // };
  67. /**
  68. * 添加员工的功能
  69. * -点击按钮以后,将员工的信息添加到表格中
  70. */
  71. //为提交按钮绑定单击响应函数
  72. var addEmpButton = document.getElementById("addEmpButton");
  73. addEmpButton.onclick = function () {
  74. // alert("hello");
  75. //获取用户添加的员工信息
  76. //获取员工的名字
  77. var name = document.getElementById("empName").value;
  78. // alert(name);
  79. //获取员工的email和salary
  80. var email = document.getElementById("email").value;
  81. var salary = document.getElementById("salary").value;
  82. // alert(name+","+email+","+salary);
  83. /**
  84. * 需要将获取到的信息保存到tr中
  85. */
  86. //创建一个tr
  87. var tr = document.createElement("tr");
  88. //创建四个td
  89. var nameTd = document.createElement("td");
  90. var emailTd = document.createElement("td");
  91. var salaryTd = document.createElement("td");
  92. var aTd = document.createElement("td");
  93. //创建一个a元素
  94. var a = document.createElement("a");
  95. //创建文本节点
  96. var nameText = document.createTextNode(name);
  97. var emailText = document.createTextNode(email);
  98. var salaryText = document.createTextNode(salary);
  99. var delText = document.createTextNode("Delete");
  100. //将文本添加到td中
  101. nameTd.appendChild(nameText);
  102. emailTd.appendChild(emailText);
  103. salaryTd.appendChild(salaryText);
  104. //向a中添加文本
  105. a.appendChild(delText);
  106. //将a添加到td中
  107. aTd.appendChild(a);
  108. //将td添加到tr中
  109. tr.appendChild(nameTd);
  110. tr.appendChild(emailTd);
  111. tr.appendChild(salaryTd);
  112. tr.appendChild(aTd);
  113. //向a中添加href属性
  114. a.href = "javascript:;";
  115. //为新添加的a再绑定一次单击响应函数
  116. a.onclick = function () {
  117. // alert("hello");
  118. //点击超链接以后,需要删除超链接所在的那一行
  119. //这里我们点击哪个超链接,this就是谁
  120. // alert(this);
  121. //获取当前tr
  122. var tr = this.parentNode.parentNode;
  123. //获取要删除的员工的名字
  124. // var name = tr.getElementsByTagName("td")[0].innerHTML;
  125. var name = tr.children[0].innerHTML;
  126. //删除之前弹出一个提示框
  127. /**
  128. * confirm()用于弹出一个带有确认和取消按钮的提示框
  129. * 需要一个字符串作为参数,该字符串将会作为提示文字显示出来
  130. * 如果用户点击确认则会返回true,如果点击取消则返回false
  131. */
  132. var flag = confirm("确认删除" + name + "吗?");
  133. // alert(flag);
  134. if (flag) {
  135. //删除tr
  136. tr.parentNode.removeChild(tr);
  137. };
  138. /**
  139. * 点击超链接以后,超链接会跳转页面,这个是超链接的默认行为
  140. * 但是此时我们不希望出现默认行为,
  141. * 可以通过在相应函数的最后return false来取消默认行为
  142. * 或者将超链接的diam改为下面的代码也可以:
  143. * <td><a href="javascript:;">Delete</a></td>
  144. */
  145. return false;
  146. };
  147. //代码简化后,可以写成下面的格式
  148. // a.onclick = delA;
  149. //获取table
  150. var employeeTable = document.getElementById("employeeTable");
  151. //获取employeeTable中的tbody
  152. var tbody = employeeTable.getElementsByTagName("tbody")[0];
  153. //将tr添加到table中
  154. employeeTable.appendChild(tr);
  155. };
  156. };
  157. </script>
  158. </head>
  159. <body>
  160. <table id="employeeTable">
  161. <tr>
  162. <th>name</th>
  163. <th>Email</th>
  164. <th>Salary</th>
  165. <th>&nbsp;</th>
  166. </tr>
  167. <tr>
  168. <td>Tom</td>
  169. <td>tom@Tom.com</td>
  170. <td>5000</td>
  171. <td><a href="deleteEmp?id=001">Delete</a></td>
  172. </tr>
  173. <tr>
  174. <td>Jerry</td>
  175. <td>jerry@sohu.com</td>
  176. <td>8000</td>
  177. <td><a href="deleteEmp?id=002">Delete</a></td>
  178. </tr>
  179. <tr>
  180. <td>Bob</td>
  181. <td>Bob@sohu.com</td>
  182. <td>10000</td>
  183. <td><a href="deleteEmp?id=003">Delete</a></td>
  184. </tr>
  185. </table>
  186. <div id="formDiv">
  187. <h4>添加新员工</h4>
  188. <table>
  189. <tr>
  190. <td class="word">name:</td>
  191. <td class="inp">
  192. <input type="text" name="empName" id="empName" />
  193. </td>
  194. </tr>
  195. <tr>
  196. <td class="word">email:</td>
  197. <td class="inp">
  198. <input type="text" name="email" id="email" />
  199. </td>
  200. </tr>
  201. <tr>
  202. <td class="word">salary:</td>
  203. <td class="inp">
  204. <input type="text" name="salary" id="salary" />
  205. </td>
  206. </tr>
  207. <tr>
  208. <td colspan="2" align="center">
  209. <button id="addEmpButton" value="abc">Submit</button>
  210. </td>
  211. </tr>
  212. </table>
  213. </div>
  214. </body>
  215. </html>