2016-09-28 2 views
-2

Я пытаюсь добавить динамическую информацию из XML и добавить в div. Моя идея заключается в том, чтобы добавить новый элемент DIV внутри существующего DIV (не обязательно .. я тоже на самом деле может добавить к существующему DIV)JS Не удалось выполнить 'appendChild' в 'Node': параметр 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 class="left" id="vertical"> 

Но когда i execute i get this error: Не удалось выполнить 'appendChild' в 'Node': параметр 1 не имеет тип 'Node'.

+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

Просто исправлено. Пожалуйста, не уменьшайте, когда OP разъясняется в комментариях. Я просто не видел этого, когда создавал решение. – AMagyar

+0

Я все равно получаю ту же ошибку. «Не удалось выполнить« appendChild »на« узле »: параметр 1 не относится к типу« Node ». – Joseph

Смежные вопросы