2017-02-16 62 views
0

我試圖更新表來顯示新行時保存記錄。我的代碼當前與現有表一起再次加載整個表。例如,我看到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

回答

1

getElementsByTagName函數返回一個HTML Collection(類數組對象),這意味着你必須指定你想要的那個數組的哪一項(即使只有一個項目)。

所以,你的代碼基本上應該是:

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

或者你可以使用querySelector僅返回第一個匹配元素。就像這樣:

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

getElementsByTagName實際上返回元素的集合,所以parentNode 不起作用。要獲得實際的DOM節點,您可以執行以下操作。

var old_tbody = document.getElementsByTagName('tbody')[0]; 
相關問題