如何在 JavaScript 中的 HTML 表格正文中插入一行

IT技术 javascript html html-table insert row
2021-01-15 02:01:13

我有一个带有页眉和页脚的 HTML 表格:

<table id="myTable">
    <thead>
        <tr>
            <th>My Header</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>aaaaa</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td>My footer</td>
        </tr>
    <tfoot>
</table>

我正在尝试tbody使用以下内容添加一行

myTable.insertRow(myTable.rows.length - 1);

但该行已添加到该tfoot部分中。

如何插入tbody

6个回答

如果要向 中添加一行tbody,请获取对它的引用并调用其insertRow方法。

var tbodyRef = document.getElementById('myTable').getElementsByTagName('tbody')[0];

// Insert a row at the end of table
var newRow = tbodyRef.insertRow();

// Insert a cell at the end of the row
var newCell = newRow.insertCell();

// Append a text node to the cell
var newText = document.createTextNode('new row');
newCell.appendChild(newText);
<table id="myTable">
  <thead>
    <tr>
      <th>My Header</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>initial row</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td>My Footer</td>
    </tr>
  </tfoot>
</table>

JSFiddle 上的演示

谢谢 Jonathan,如何将 css 样式添加到 textnote 中?
2021-03-13 02:01:13
以上将第一次失败。而是检查是否没有行: var rows = tableRef.rows; var rowsSoFar = (rows==null) ? 0:行数。长度;var newRow = tableRef.insertRow(rowsSoFar);
2021-03-17 02:01:13
而不是tableRef.insertRow(tableRef.rows.length);您可以简单地使用tableRef.insertRow(-1);在表的末尾插入行。
2021-03-30 02:01:13
我的代码中断是因为:无法读取 null 的属性“insertRow”。有什么建议?
2021-04-10 02:01:13
@Vrankela:可能您的选择器不正确(示例中的第一行)。
2021-04-12 02:01:13

您可以使用jQuery尝试以下代码段

$(table).find('tbody').append("<tr><td>aaaa</td></tr>");
也许你是对的,但有时你需要知道真正的东西 :) 并且正如我所说的,在使用任何库之前总是了解 JavaScript 没有什么难受的身体 ;)
2021-03-15 02:01:13
我正在尝试将您的回答应用于我的案例,但我不能,所以我发布了一个新问题,您认为您可以回答并拯救我吗?stackoverflow.com/q/63194846/3298930
2021-04-07 02:01:13
如果我想要一个变量代替 aaaa,语法是什么?
2021-04-08 02:01:13

基本方法:

这应该添加 HTML 格式的内容并显示新添加的行。

var myHtmlContent = "<h3>hello</h3>"
var tableRef = document.getElementById('myTable').getElementsByTagName('tbody')[0];

var newRow = tableRef.insertRow(tableRef.rows.length);
newRow.innerHTML = myHtmlContent;
我最喜欢的解决方案:非常优雅,并且增加了添加内部 HTML 的灵活性。
2021-03-31 02:01:13

你很接近。只需将该行添加到tbody而不是table

myTbody.insertRow();

使用前只需参考tBody( myTbody) 即可。请注意,您不需要传递表中的最后一个位置;省略参数时,它会自动定位在最后。

jsFiddle 有一个现场演示

我认为这个脚本正是你所需要的

var t = document.getElementById('myTable');
var r =document.createElement('TR');
t.tBodies[0].appendChild(r)
当然你需要修改你的新行,但我只是在答案中提供了这个概念,剩下的留给你:)
2021-03-20 02:01:13