动态生成表格

该博客展示了如何使用JavaScript动态生成HTML表格,并模拟数据进行填充。通过创建元素节点、遍历数据对象以及添加删除操作,实现了表格内容的动态展示和交互功能。此示例适用于前端开发中的数据可视化和动态数据展示场景。
摘要由CSDN通过智能技术生成
  1. <!DOCTYPE html>

  2. <html lang="en">

  3.  
  4. <head>

  5. <meta charset="UTF-8">

  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">

  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">

  8. <title>案例实现:动态生成表格</title>

  9. <style>

  10. a {

  11. text-decoration: none;

  12. }

  13.  
  14. table {

  15. width: 500px;

  16. margin: 100px auto;

  17. border-collapse: collapse;

  18. text-align: center;

  19. }

  20.  
  21. td,

  22. th {

  23. border: 1px solid #333;

  24. }

  25.  
  26. thead tr {

  27. height: 40px;

  28. background-color: #ccc;

  29. }

  30. </style>

  31. </head>

  32.  
  33. <body>

  34. <table cellspacing="0">

  35. <thead>

  36. <tr>

  37. <th>角色</th>

  38. <th>法术</th>

  39. <th>法力</th>

  40. <th>操作</th>

  41. </tr>

  42. </thead>

  43. <tbody>

  44. <!-- 表格数据动态生成 -->

  45. <!-- <tr>

  46. <td></td>

  47. </tr> -->

  48. </tbody>

  49. </table>

  50. <script>

  51. // 模拟数据:利用对象存储数据

  52. // step1. 准备不同人物的数据

  53. // 数组对象 datas 可以存储任意类型数据

  54. // 每个数组元素 datas[i] 都是一个对象

  55. var datas = [{

  56. // 角色

  57. name: '闻人翊悬',

  58. // 法术

  59. magic: '火系',

  60. // 法力

  61. mana: 85

  62. }, {

  63. name: '申屠子夜',

  64. magic: '水系',

  65. mana: 80

  66. }, {

  67. name: '公仪楚人',

  68. magic: '土系',

  69. mana: 85

  70. }, {

  71. name: '容成墨熙',

  72. magic: '木系',

  73. mana: 90

  74. }, {

  75. name: '轩辕神君',

  76. magic: '金系',

  77. mana: 100

  78. }, {

  79. name: '小新',

  80. magic: '童系',

  81. mana: 100

  82. }];

  83. // console.log(datas.length);

  84. // step2. 所有数据都是放在 tbody 中的 tr 里面

  85. var tbody =document.querySelector('tbody');

  86. for (var i=0;i<datas.length;i++){

  87. //1.创建tr行元素节点

  88. var tr =document.createElement('tr');

  89. //向tbody中追加tr

  90. tbody.appendChild(tr);

  91.  
  92. //2.行里面创建单元格(跟数据有关系的3个单元格)td

  93. //单元格的数量取决于每个对象2 datas[i]里面的属性个数

  94. //结合for 循环遍历对象 datas[i]

  95. for (var k in datas[i]){//内层for循环控制单元格 td

  96. //创建td单元格元素节点

  97. var td =document.createElement('td');

  98. //把对象中的属性值 datas[i][k] 赋值给td单元格

  99. td.innerHTML=datas[i][k];

  100. //向tr中追加单元格 td中的属性值/内容

  101. tr.appendChild(td);

  102. }

  103.  
  104.  
  105. // step3. 创建含有删除的单元格

  106. var td =document.createElement('td');

  107. td.innerHTML = '<a href="JavaScript:;">删除</a>';

  108. tr.appendChild(td);

  109.  
  110. // step4. 删除操作

  111. // 点击 a 删除 当前 a 所在的行(链接的父节点的父节点)

  112. // node.removeChild(child)

  113. var as=document.querySelectorAll('a');

  114. for (var i=0;i<as.length;i++){

  115. as[i].οnclick=function(){

  116. tbody.removeChild(this.parentNode.parentNode);

  117. }

  118. }

  119. }

  120. </script>

  121. </body>

  122.  
  123. </html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值