Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除javascript中的第一个子项_Javascript_Element - Fatal编程技术网

删除javascript中的第一个子项

删除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

我正在尝试使用DOM
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]);