删除javascript中的第一个子项
我正在尝试使用DOM删除javascript中的第一个子项,javascript,element,Javascript,Element,我正在尝试使用DOMremoveChild()删除ol中的第一个li。但由于某种原因,它不起作用 这是我的javascript: document.getElementById('queue').removeChild( document.getElementById('queue').childNodes[0] ); 这是我的HTML: <ol id="queue"> <li>Surprised Kitty (Original)<span cla
removeChild()
删除ol
中的第一个li
。但由于某种原因,它不起作用
这是我的javascript:
document.getElementById('queue').removeChild(
document.getElementById('queue').childNodes[0]
);
这是我的HTML:
<ol id="queue">
<li>Surprised Kitty (Original)<span class="nodisplay">0Bmhjf0rKe8</span></li></ol>
惊喜猫(原版)0Bmhjf0rKe8
我试着提醒子节点[0]
,它返回[Object Text]
,这似乎有点奇怪,因为我只需要对象
希望我已经讲清楚了。子节点不仅是您所考虑的元素,也是文本节点。您可以迭代节点并删除第一个
LI
var p = document.getElementById('queue');
for (var i=0; i<p.childNodes.length; i++) {
if (p.childNodes[i].tagName=='LI') {
p.removeChild(p.childNodes[i]);
break;
}
}
在和标记之间是空格和换行符。它们组成一个文本节点。因此,#queue
元素的第一个子元素是文本节点
您可以使用该属性而不是.childNodes
,它只考虑元素节点,或者迭代所有子节点,直到找到第一个li
节点,如。尝试以下一种线性关系:
document.getElementById('queue').removeChild(document.getElementById('queue').getElementsByTagName('li')[0]);
进一步解释如下:
var queue=document.getElementById('queue');//获取id为queue的列表。
var elements=queue.getElementsByTagName('li');//获取具有li标记名的元素的HTMLCollection。
queue.removeChild(元素[0]);//从作为第一个li元素的队列中删除子元素。
删除队列中包含的所有列表:
var list=document.getElementById('queue');
list.removeChild(list.getElementsByTagName('li')[0]);
你能给我举个例子吗?记录在案,我看到Alex在我编辑之前提到了getElementsByTagName。@Locercus不,它是本地的。只需使用document.getElementById('queue').children[0]
No它不是。。。。jQuery也有一个.children
方法,但这不是我要说的。第一个子元素是带换行符的文本。使用这行代码,您只能获得'li'元素。谢谢,这样做了!:)dystroy给出了一个描述这一点的答案。我的意思是,如果你提供一个解释,人们更有可能对你的答案投赞成票。不仅仅是一段代码。
var list=document.getElementById('queue');
list.removeChild(list.getElementsByTagName('li')[0]);