【问题标题】:Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node' [duplicate]未捕获的类型错误:无法在“节点”上执行“appendChild”:参数 1 不是“节点”类型 [重复]
【发布时间】:2015-09-07 23:57:10
【问题描述】:
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);

消息存在并返回

&lt;div id=messages"&gt;&lt;/div&gt;

似乎没有什么是空的,所以我不确定为什么会抛出这个。

有人知道为什么会抛出这个错误吗?

【问题讨论】:

  • 试试.appendChild(document.createTextnode(line));而不是.appendChild(line);

标签: javascript jquery


【解决方案1】:

您传递的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);

【讨论】:

  • 是的,大约在您发帖时发现。这行得通。当它允许我时,我会奖励你。
  • 还要确保 namemessage.field_message_body.und[0].value 已清理(即确保它不易受到 XSS 攻击)
【解决方案2】:

这个怎么样:

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;

【讨论】:

  • 我不推荐这个。这将删除状态和事件监听器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
相关资源
最近更新 更多