错误:无法读取未定义的属性'replaceChild'

问题描述:

我试图更新表来显示新行时保存记录。我的代码当前与现有表一起再次加载整个表。例如,我看到1-15行,然后添加一行,并查看31个总行,第1-15行,然后是第1-16行,全部在同一个表中。错误:无法读取未定义的属性'replaceChild'

这是我替换函数的代码,它在需要替换数据时调用我的原始加载函数。我从另一个例子中看到了这一点。

function replaceData() { 
    var old_tbody = document.getElementsByTagName('tbody'); 
    var new_tbody = document.createElement('tbody'); 
    loadData(new_tbody); 
    old_tbody.parentNode.replaceChild(new_tbody,old_tbody); 

    console.log("Data replaced"); 
} 

我显然不是JavaScript专家,所以任何帮助,将不胜感激。

+0

var old_tbody = document.querySelector(“tbody”)' – 2017-02-16 20:59:44

getElementsByTagName函数返回一个HTML Collection(类数组对象),这意味着你必须指定你想要的那个数组的哪一项(即使只有一个项目)。

所以,你的代码基本上应该是:

var old_tbody = document.getElementsByTagName('tbody')[0]; 

或者你可以使用querySelector仅返回第一个匹配元素。就像这样:

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

getElementsByTagName实际上返回元素的集合,所以parentNode 不起作用。要获得实际的DOM节点,您可以执行以下操作。

var old_tbody = document.getElementsByTagName('tbody')[0];