javascript - 如何在纯javascript中动态添加<tr>标签到<table>标签?

标签 javascript

html文件中的代码如下:

<html>
    <script type="text/javascript">
       var records=[{"name":"Fred","id":"123"},{"name":"Jim","id":"456"}];
    </script>
    <table id="tb1">
        <tr id="row1">
            <td style="background-color:gray" id="name">name</td><td style="background-color:gray" id="id">id</td>
        </tr>
        <tr id="row2"><td>shouldn't be added here</td><td>neither here</td></tr>
    </table>
</html>

我想用纯javascript添加row1和row2之间的记录内容。(没有任何第三方javascript框架)我该怎么办?

最佳答案

您不是添加到“标签”,而是添加到元素

一般情况下,您可以通过 document.createElement 创建元素(或者通过将包含 HTML 的字符串分配给现有元素的 innerHTML 属性)。

您可以使用 appendChild 将元素添加为其他元素的子元素或insertBefore .

例如,您可以在表格中的 id="row2" 之前添加包含两个表格单元格的行:

var newRow = document.createElement('tr');
newRow.appendChild(document.createElement('td')); // The first cell
newRow.appendChild(document.createElement('td')); // The second cell
var row2 = document.getElementById("row2");
row2.parentNode.insertBefore(newRow, row2);       // Insert it

但是,如 Heitor points out ,对于表,您可以使用特定的方法来代替,这些方法不太冗长:

这是上面使用 insertCell 的代码:

var newRow = document.createElement('tr');
newRow.insertCell(-1);                            // The first cell
newRow.insertCell(-1);                            // The second cell
var row2 = document.getElementById("row2");
row2.parentNode.insertBefore(newRow, row2);       // Insert it

我们也可以使用insertRow:

var row2 = document.getElementById("row2");            // Get existing row
var newRow = row2.parentNode.insertRow(row2.rowIndex); // Create and insert new row
newRow.insertCell();                                   // The first cell
newRow.insertCell();                                   // The second cell

...但是我们会重复对显示的 DOM 进行更改(添加一个空白行,然后添加一个单元格,然后添加另一个单元格),如果可能的话最好避免这种情况。在前两个示例中,我们创建了行并添加了其单元格,然后将整个结构添加到 DOM,执行一个实时 DOM 操作。

<小时/>

DOM API 可能很冗长并且有点笨拙,并且它的实现可能会因浏览器而异(尽管以上所有内容都是可靠的)。显然,您可以直接使用它,但您也可以使用几个优秀的 JavaScript DOM 操作库中的任何一个来为您整理一些浏览器兼容性的内容,并获得许多有用的实用功能。

关于javascript - 如何在纯javascript中动态添加<tr>标签到<table>标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117850/

相关文章:

javascript - 动态加载 rel 属性中的链接。

javascript - 将键值(对象)对添加到数组中的所有对象

javascript - 没有标题的 Bootstrap 弹出窗口

javascript - ‘readystatechange’ 的 ‘window’ 事件是什么意思?

Javascript 创建土耳其 Sluggable

javascript - Express服务器不加载js和css

javascript - 不可点击的分层元素,Z-Index 不起作用

javascript - 动态更改已在 JavaScript 中创建的实例的值

javascript - ubunu 中的 Angular CLI 安装错误 - 当我尝试在我的 ubuntu 机器中运行 angular CLI 命令时出现错误

javascript - 基于单选按钮启用/禁用功能按钮