0


【JavaScript-节点操作】如何进行节点的删除以及动态表格的创建,了解三种动态元素的创建区别

前言

  • 💂 个人主页:Aic山鱼
  • 个人社区:山鱼社区
  • 💬 如果文章对你有帮助,欢迎关注、点赞、收藏(一键三连)和订阅专栏哦

本篇介绍如何进行对删除节点的操作和使用,以及对动态表格的创建和区别分别进行了相应的操作展现(附相关代码)

1.如何删除节点

使用**node.removeChild()**方法从DOM中删除一个子节点,返回删除的节点。

1.1删除奥特曼案例

  1. <body>
  2. <button>删除</button>
  3. <ul>
  4. <li>迪迦</li>
  5. <li>艾迪</li>
  6. <li>高斯</li>
  7. </ul>
  8. <script>
  9. // 获取元素
  10. var ul = document.querySelector('ul');
  11. // 点击按钮依次删除奥特曼
  12. var but = document.querySelector('button');
  13. but.onclick = function () {
  14. if (ul.children.length == 0) {
  15. this.disabled = true;
  16. alert('全都删无了!我还怎么相信光啊!')
  17. } else {
  18. ul.removeChild(ul.children[0]);
  19. }
  20. }
  21. </script>
  22. </body><body>
  23. <button>删除</button>
  24. <ul>
  25. <li>迪迦</li>
  26. <li>艾迪</li>
  27. <li>高斯</li>
  28. </ul>
  29. <script>
  30. // 获取元素
  31. var ul = document.querySelector('ul');
  32. // 点击按钮依次删除奥特曼
  33. var but = document.querySelector('button');
  34. but.onclick = function () {
  35. if (ul.children.length == 0) {
  36. this.disabled = true;
  37. alert('全都删无了!我还怎么相信光啊!')
  38. } else {
  39. ul.removeChild(ul.children[0]);
  40. }
  41. }
  42. </script>
  43. </body>

1.2删除留言案例

在上篇文章中也实现了留言板的功能,这次就把功能完善一下,删除不当留言

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <style>
  9. li {
  10. list-style: none;
  11. width: 200px;
  12. margin-top: 10px;
  13. background-color: rgb(176, 231, 250);
  14. }
  15. textarea {
  16. resize: none;
  17. width: 300px;
  18. height: 150px;
  19. border: 1px solid blue;
  20. }
  21. li a {
  22. float: right;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <textarea name="" id="" cols="30" rows="10"></textarea>
  28. <button>发布</button>
  29. <ul>
  30. </ul>
  31. <script>
  32. // 获取元素
  33. var but = document.querySelector('button');
  34. var text = document.querySelector('textarea');
  35. var ul = document.querySelector('ul');
  36. // 注册事件
  37. but.onclick = function () {
  38. if (text.value == '') {
  39. alert('您还没有输入呢?')
  40. return false;
  41. }
  42. else {
  43. // 1.创建元素
  44. var li = document.createElement('li');
  45. li.innerHTML = text.value + "<a href='javascrpit:;'>删除</a>";
  46. // 2.添加元素
  47. // ul.appendChild(li);
  48. ul.insertBefore(li, ul.children[0]);
  49. // 点击发布后使文本域内的value为空
  50. text.value = '';
  51. // 3.删除留言
  52. var as = document.querySelectorAll('a');
  53. for (var i = 0; i < as.length; i++) {
  54. as[i].onclick = function () {
  55. // 删除的是li所以也就是删除的是a的父亲li,这里的li就是 this.parentNode
  56. ul.removeChild(this.parentNode);
  57. }
  58. }
  59. }
  60. }
  61. </script>
  62. </body>
  63. </html>

2.复制节点

node. cloneNode ()方法返回调用该方法的节点的一个副本。也称为克隆节点或者是拷贝节点
node. cloneNode()括号为空或者里面是false浅拷贝只复制标签不复制里面的内容 node . cloneNode(true)括号为true深拷贝复制标签复制里面的内容

3.动态表格的创建

3.1思路导向

①使用js动态生成。先进行自定义数据,数据采取对象形式存储。

②所有的数据都是放到tbody里面的行里面。

③因为行很多,我们需要循环创建多个行(对应多少人)

④每个行里面又有很多单元格(对应里面的数据) , 继续使用循环创建多个单元格,并且把数据存入里面(双重for循环)

⑤最后一列单元格是删除,需要单独创建单元格。

注: 标签表格主体(正文)。该标签用于组合 HTML 表格的主体内容。tbody 元素应该与 thead 和 tfoot 元素结合起来使用。

3.2相关代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <style>
  9. a {
  10. text-decoration: none;
  11. color: brown;
  12. }
  13. table {
  14. width: 500px;
  15. height: 100px;
  16. border-collapse: collapse;
  17. text-align: center;
  18. }
  19. thead th {
  20. width: 100px;
  21. border: 1px solid black;
  22. }
  23. thead tr {
  24. height: 40px;
  25. background-color: #ccc;
  26. }
  27. tr td {
  28. border: 1px solid black;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <table>
  34. <thead>
  35. <tr>
  36. <th>姓名</th>
  37. <th>年龄</th>
  38. <th>性别</th>
  39. <th>班级</th>
  40. <th>操作</th>
  41. </tr>
  42. </thead>
  43. <tbody>
  44. </tbody>
  45. </table>
  46. <script>
  47. var datas = [
  48. {
  49. name: '山鱼',
  50. age: 12,
  51. sex: '男',
  52. class: '9-2',
  53. },
  54. {
  55. name: '山猪',
  56. age: 11,
  57. sex: '男',
  58. class: '9-2',
  59. },
  60. {
  61. name: '山猫',
  62. age: 10,
  63. sex: '男',
  64. class: '9-2',
  65. }
  66. ];
  67. var tbody = document.querySelector('tbody');
  68. for (var i = 0; i < datas.length; i++) {
  69. var tr = document.createElement('tr');
  70. tbody.appendChild(tr);
  71. for (var k in datas[i]) {
  72. // 创建单元格
  73. var td = document.createElement('td');
  74. td.innerHTML = datas[i][k];
  75. tr.appendChild(td);
  76. }
  77. // for(var k in obj) {
  78. // k得到的是属性名
  79. // obj[k]得到是属性值
  80. // 所以这里的属性值就是 datas[i][k]
  81. // 创建操作行单元格
  82. var td = document.createElement('td');
  83. td.innerHTML = "<a href='javascript:;'>移除</a>"
  84. tr.appendChild(td);
  85. }
  86. // 点击'删除',把tr删除
  87. var as = document.querySelectorAll('a');
  88. for (var i = 0; i < as.length; i++) {
  89. as[i].onclick = function () {
  90. tbody.removeChild(this.parentNode.parentNode);
  91. }
  92. }
  93. </script>
  94. </body>
  95. </html>

3.3最终结果

4.三种动态元素创建区别

document.write ()

document.write是直接将内容写入页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘element.innerHTM

是将内容写入某个DOM节点,不会导致页面全部重绘 创建多个元素效率更高(不要拼接字符串,采取数组形式拼接) , 结构稍微复杂

document.createElement ()

创建多个元素效率稍低- 点点,但是结构更清晰

总的来说,innerHTML的效率要比**document.createElement ()**高

点赞👍:您的赞赏是我前进的动力!
收藏⭐:您的支持我是创作的源泉!
评论✍:您的建议是我改进的良药!
山鱼🦈的个人社区:欢迎大家加—— 山鱼社区

标签: html 前端 javascript

本文转载自: https://blog.csdn.net/zhaochen1127/article/details/126840654
版权归原作者 Aic山鱼 所有, 如有侵权,请联系我们删除。

“【JavaScript-节点操作】如何进行节点的删除以及动态表格的创建,了解三种动态元素的创建区别”的评论:

还没有评论