动态更新后保留 HTML 表格位置

Posted

技术标签:

【中文标题】动态更新后保留 HTML 表格位置【英文标题】:Preserve HTML table location after dynamic update 【发布时间】:2021-04-03 22:50:58 【问题描述】:

当我使用appendChild() 更新 html 表格时,整个表格被移动到文档的底部。如何在 DOM 中保留表格的位置?

我的示例也发布在JSFiddle。

<!--I want the existing table below to stay fixed in place after new rows are added.-->

<table id="table">
  <tr>
    <td> Table Cell 1</td>
    <td> Table Cell 2</td>
  </tr>
</table>

<!--The following button will add rows, but also move the table. How do I stop the move?-->

<input type="button" value="ADD NEW ROWS." onclick="generate_table()">

<script>
  // This function just creates new rows for the table 
  function generate_table() 
    var body = document.getElementsByTagName("body")[0];
    var tbl = document.getElementById("table");
    var tblBody = document.createElement("tbody");

    for (var i = 0; i < 2; i++) 
      var row = document.createElement("tr");
      for (var j = 0; j < 2; j++) 
        var cell = document.createElement("td");
        var cellText = document.createTextNode("cell " + i + ", column " + j);
        cell.appendChild(cellText);
        row.appendChild(cell);
      
      tblBody.appendChild(row);
    
    tbl.appendChild(tblBody);
    body.appendChild(tbl);
  
</script>

<style>
  table,
  th,
  td 
    border: 1px solid black;
    border-collapse: collapse;
  
</style>

【问题讨论】:

【参考方案1】:

删除以下行,你不需要它。

body.appendChild(tbl);

表格节点已经是文档对象模型的一部分,不需要再次添加。通过将元素附加到 body,您将其从当前位置移动到 body 节点的末尾。

根据经验,您需要使用appendChild,前提是元素是使用createElement 动态创建的。

【讨论】:

以上是关于动态更新后保留 HTML 表格位置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 thymeleaf 动态更新表格?

vxe-table动态渲染表格表头和列表等,视图不更新,视图错乱问题

使用 jquery 动态更新 DataTable 内容

当我动态更改其框架时,即使重新加载后 UITableView 内容大小也不会更新

基于下拉列表中选项的选择动态更新表格的Angularjs代码

在 pyqt5 界面中动态更新 matplotlib 画布