gpt4 book ai didi

javascript - 为什么removeChild函数对于列表项和i标签的行为不同?

转载 作者:行者123 更新时间:2023-12-03 01:17:18 27 4
gpt4 key购买 nike

我注意到,removeChild 的行为与处理其他元素(例如列表项)时不同。我对 frontAwesome 中的一些图标使用 i 标签,并希望在单击按钮时单独删除这些项目。

不幸的是,只有使用removeChild()函数两次才能删除每个i标签元素。 (奇怪!)

发生什么事了?

HTML:

  <div id="myFonts">
<i>1</i>
<i>2</i>
<i>3</i>
<i>4</i>
<i>5</i>
</div>

Javascript:

function FunctionTwo() {
var font = document.getElementById("myFonts");
font.removeChild(font.childNodes[0]);
}

https://codepen.io/anon/pen/EeaYvL

编辑注意:是否使用 LineBreaks 会产生影响!

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

这里有6个子节点。显然,换行符也被视为子节点!

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

这里有3个子节点。奇怪 - 这是一个错误吗?

最佳答案

来自MDN ,

childNodes includes all child nodes, including non-element nodes like text and comment nodes. To get a collection of only elements, use ParentNode.children instead.

因此,在这两种情况下,元素都被奇怪地删除了。你应该更新

来自

font.removeChild(font.childNodes[0]);

font.removeChild(font.children[0]);

对于调整,https://codepen.io/anon/pen/aazoLK

关于javascript - 为什么removeChild函数对于列表项和i标签的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51947976/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com