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


    目录

     前言

    1.如何删除节点

    1.1删除奥特曼案例

     1.2删除留言案例

     2.复制节点

     3.动态表格的创建

    3.1思路导向

    3.2相关代码

    3.3最终结果

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


    前言

    • 💂 个人主页: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. 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>Documenttitle>
    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 + "删除";
    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. 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>Documenttitle>
    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 = "移除"
    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 ()

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

  • 相关阅读:
    web前端面试-- http的各个版本的区别(HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP/3.0)
    如何给开发板设置静态IP
    《Python+Kivy(App开发)从入门到实践》自学笔记:高级UX部件——TabbedPanel选项面板
    ASA-HA-FO-A/S
    Java中ArrayList的常用api
    未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
    记录--Three.js的简单使用,Three.js在vue3.x中导入.pcd三维模型文件
    C++函数重载和函数重写的区别,请举例说明
    python3基础语法
    【Pytorch】快速掌握迁移学习:代码示例与指南(使用预训练模型解决图像分类任务)
  • 原文地址:https://blog.csdn.net/zhaochen1127/article/details/126840654