文档createTextNode混淆

时间:2014-08-27 14:57:29

标签: javascript dom

这里我有一个例子,其中使用element.replaceChild()方法替换无序列表的第一个子节点。要替换前一个节点,使用documen.createTextNode()创建textNode。但问题是它的名为replaceChild然后它应该替换child.And我用textNode替换它。但令人惊讶的是被替换的孩子在它前面有一个子弹标签。由于textNode不是列表项,那么为什么不删除子弹标签。虽然问题不是一个严肃的人。只是为了满足我的好奇心而发誓。谢谢!!

jsFIDDLE

<!DOCTYPE html>
<html>
<body>

<ul id="myList"><li>Coffee</li><li>Tea</li><li>Milk</li></ul>

<p id="demo">Click the button to replace the first item in the the list</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction()
{
var textnode=document.createTextNode("Water");
var item=document.getElementById("myList").childNodes[0];
item.replaceChild(textnode,item.childNodes[0]);
}
</script>


</body>
</html>

1 个答案:

答案 0 :(得分:1)

item指的是第一个li元素。然后,您将替换li元素(item.childNodes[0])的第一个子节点,即文本节点Coffee

您永远不会替换li元素,只替换其内容。

如果要替换li元素,请使用

var item=document.getElementById("myList");

代替。