Javascript 为什么赢了';这个脚本是否附加了一个子div元素?

Javascript 为什么赢了';这个脚本是否附加了一个子div元素?,javascript,Javascript,当我单击带有onclick属性的p元素调用make_子函数时,我希望它在单击时附加一个div元素,但它只是在段落元素中附加一个文本节点,这是什么原因 <script type="text/javascript"> function make_child(text, id, type) { var text = document.createTextNode(text); var target = document.getElementById(id); var

当我单击带有onclick属性的p元素调用make_子函数时,我希望它在单击时附加一个div元素,但它只是在段落元素中附加一个文本节点,这是什么原因

<script type="text/javascript">
function make_child(text, id, type) {
    var text = document.createTextNode(text);
    var target = document.getElementById(id);
    var add = document.createElement(type);
    var addtext = add.appendChild(text);
    target.appendChild(addtext);
}
</script>

 <p id="changeme" onclick="make_child('I have changed', 'changeme', 'div')">Click me to change</p>

函数make_child(文本、id、类型){
var text=document.createTextNode(文本);
var target=document.getElementById(id);
var add=document.createElement(类型);
var addtext=add.appendChild(文本);
target.appendChild(addtext);
}
单击我进行更改


尝试执行
target.appendChild(add)
而不是
target.appendChild(addtext)

编辑(更多详细信息):
appendChild
(来自MDN)的语法为:

其中
child
是要追加的元素。在这种情况下,
addtext=add.appendChild(text)
被设置为
text
,而不是
add
。只要执行
target.appendChild(add)
就可以解决这个问题

这也意味着变量
addtext
是无用的;您可以删除它,只留下

add.appendChild(text)

对于该行。

将最后一行更改为该行

target.appendChild(add);

现在,您将添加到正确的元素

错误控制台会说什么?我很确定它在说些什么。在var text赋值时,它给了我一个无效的语法错误,所以我将该变量改为text_a,现在我没有错误,但它仍然只是在元素中附加textnode而不是元素,带有text节点..啊,对不起,我忽略了
text
是一个文本节点。您的
changeme
元素在哪里?在传递给函数的文本节点后面附加的add变量是如何添加的?您创建了
add
作为一个div,并将文本附加到它,现在获取目标并将
add
div附加到它。在appendChild()返回所附加内容之前,我不知道您的代码是如何工作的。我以前不知道。添加变量是如何将文本节点附加到传递给函数的?您的问题并不完全清楚
add
是对附加内容的html元素的引用。调用
add.appendChild(text)
时,
add
本身会发生变化。这意味着,当您将其传递给
target.appendChild
时,您传递的是包含已添加节点的新更改版本。但是创建的textnode何时附加到已创建的div元素?行
addtext=add.appendChild(text)
。这行实际上做了两件事:它将
addtext
设置为
text
,并将
text
附加到
add
。基本上,
add.appendChild(text)
的一个副作用是,
text
被附加到
add
,而不考虑赋值(
addtext=…
)。基本上,是的:毕竟,您使用的是文档对象模型(DOM)。
target.appendChild(add);