2016-09-28 71 views
-2

我試圖從XML動態添加信息並添加到div。我的想法是要將現有的div裏面的新的div(不是強制性的。我也可以真正添加到現有的div)JS未能在'Node'上執行'appendChild':參數1不是'Node'類型

JS

var newDiv = document.createElement("div"); //new Div 
    newDiv.appendChild(sideTab); 
    var existingDiv = document.getElementById("vertical"); //Existing div 
    document.body.insertBefore(newDiv,existingDiv); 

sideTab都會有這樣的事情:

<ul class ="tab" > 
    <li><a href="#" class="tab"> Something</a></li> 
</ul> 

現有的div

<div class="left" id="vertical"> 

但是,當我執行我得到這個錯誤: 無法執行「節點」上的'appendChild':參數1不是類型'節點'。

+3

你在哪裏定義了'sideTab'? – brk

+2

看起來像你在'sideTab'變量中的任何一個都不是'Node'類型,只是錯誤消息說的是什麼。 – keymone

+0

推測:'sideTab'的值是一個字符串(HTML) – Quentin

回答

1

將字符串解析爲DOM,並將所需的元素添加到HTML中。

<!DOCTYPE html> 
<html> 

<head> 
<script> 
window.onload = function() { 
    var newDiv = document.createElement("div"); //new Div 
    var parser = new DOMParser(); 
    var el = parser.parseFromString(`<ul id="sideBar"><li><a>Something</a></li></ul>`, "text/html"); 
    var element = el.getElementById("sideBar"); 
    newDiv.appendChild(element); 
    var existingDiv = document.getElementById("vertical"); //Existing div 
    document.body.insertBefore(newDiv, existingDiv); 
} 
</script> 
</head> 

<body> 
    <div class="left" id="vertical"></div> 
</body> 

</html> 

修正了串元件的作用。

Plunker has been fixed.

+1

該OP在評論中澄清說,'sideTab'是一個字符串而不是'null'。 – Quentin

+0

剛剛修復。請不要在評論中澄清意見時冷靜下來。當我創建解決方案時,我只是沒有看到它。 – AMagyar

+0

我仍然收到相同的錯誤。 「在'node'上執行'appendChild'失敗:參數1的類型不是'Node'。 – Joseph

相關問題