【问题标题】:In-place replacement of HTML Elements就地替换 HTML 元素
【发布时间】:2020-05-27 10:00:51
【问题描述】:

我有使用以下 js 生成的表格:

var tbl = document.createElement('table');
var tbdy = document.createElement('tbody');
var thd = document.createElement('thead');

var Headings = ["Lun","File","CDROM","Removable","ReadOnly","NoFUA"];
var tr = document.createElement('tr');
for (var i = 0; i < Headings.length; i++) {
    var td = document.createElement('td');
    td.appendChild(document.createTextNode(Headings[i]))
    tr.appendChild(td);
}
thd.appendChild(tr);

for (var lun in data) {
    console.log(lun);
    var tr = document.createElement('tr');
    tr.appendChild(document.createElement('td').appendChild(document.createTextNode(lun)));

    for (var info in data[lun]) {
        var td = document.createElement('td');
        td.appendChild(document.createTextNode(data[lun][info]))
        tr.appendChild(td)
    }
    tbdy.appendChild(tr);
}
tbl.appendChild(thd);
tbl.appendChild(tbdy);
var table = document.getElementById('file-table');

以及以下相关的 HTML:

<table id="file-table" style="width:100%"></table>

您在 js 的最后一行看到的 appendChild 方法有效,但是使用 js 创建表的目的是完全替换 'file-table' 的所有子节点。

我已经尝试迭代 childNodes 并使用 removeChild 方法,但这会产生一些有趣的结果 - 不会完全删除所有节点,或者有时会出现关于第一个参数不是节点的错误消息。

有什么想法吗?

【问题讨论】:

  • 很好奇为什么要动态创建一个表然后将其附加到另一个表。

标签: javascript html nodes appendchild removechild


【解决方案1】:

您可以选择目标元素,然后直接更新它们吗?

document.getElementById('td1').innerHTML = "Some text to enter"

如果没有,您也可以replace the table body 自己:

var new_tbody = document.createElement('tbody');
populate_with_new_rows(new_tbody);
old_tbody.parentNode.replaceChild(new_tbody, old_tbody)

【讨论】:

  • 你的选项 2 看起来很吸引人,我会调查一下
猜你喜欢
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 2014-08-03
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多