这里有一个示例,其中使用element.replaceChild()方法替换了无序列表的第一个子节点。要替换上一个节点,请使用documen.createTextNode()创建一个textNode,但问题在于它的replaceChild方法然后应该替换该子项。并且我正在用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>

最佳答案

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

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

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

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


代替。

关于javascript - 文档createTextNode困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25530520/

10-09 07:44