为什么我不能直接将子节点附加到文档对象模型?

时间:2017-12-05 20:31:18

标签: javascript dom

在研究Document对象模型时,我遇到了一个问题,就是直接在文档对象上附加一个新创建的子对象, 这是我的代码:

var newEl=document.createElement("textarea");
document.appendChild(newEl);

产生的错误是:

  

未捕获的DOMException:无法执行' appendChild' on' Node':只允许文档中的一个元素。

我知道解决方案是将其附加到 document.body document.documentElement ,但我没有找到参考指出上述方式因特定原因而不正确。

接受我为初学者道歉。

2 个答案:

答案 0 :(得分:1)

如果你想要做的是理解Node Tree中不同项目的规范和限制,那么这可能是你正在寻找的。基本上,Document只能有一种类型(HTML或XML)和一个元素/子元素(例如<html>),而元素(<html>标记)可以有多个子元素(<body>,{ {1}}等等。),属性等。所以元素(<head>)及其子元素可以附加到,但文档本身不能。

希望有所帮助。

答案 1 :(得分:0)

我刚遇到此错误,因此想澄清原因, 您正在使用此命令document.appendChild(newEl);进行的操作正在尝试向主文档中添加元素,但是主文档仅允许一个元素,即主<html>标签。

因此,您可以选择另一个元素,或者如果要将其添加到可显示区域,则应使用document.body.appendChild(newEl)