2015-09-07 52 views
3
var line = "<p><strong>" + name + ": </strong>" + message.field_message_body.und[0].value + "</p>"; 
console.log(line); 
console.log(document.getElementById("messages")); 

document.getElementById("messages").appendChild(line); 

messages exists and it returns遗漏的类型错误:未能执行上“节点”的appendChild':参数1的类型不是“节点”

<div id=messages"></div>

没什么似乎是空的,所以我不知道为什么这被抛出。

没有人有任何想法,为什么它可能会引发此错误?

+0

尝试'.appendChild(document.createTextnode(线));',而不是'.appendChild(线);' – dandavis

回答

8

您要通过的line变量不是Node,这是String。请首先尝试使用

var line = document.createElement("p"); 
line.innerHTML = "<strong>" + name + ": </strong>" + message.field_message_body.und[0].value; 
document.getElementById("messages").appendChild(line); 
+0

叶先生,发现了在关于你发布的时间。这工作。当它让我时,我会给你奖励点。 –

+0

也确保'name'和'message.field_message_body.und [0] .value'被消毒(即确保它不会受到XSS) – petrkotek

0

如何:

var line = "<p><strong>" + name + ": </strong>" + message.field_message_body.und[0].value + "</p>"; 
var msgHTML = document.getElementById("messages").innerHTML; 
document.getElementById("messages").innerHTML = msgHTML + line; 
+0

我不建议这样做。这将删除状态和事件监听器。 – Kurkula

相关问题