如何删除不使用getElementById的特定元素?

时间:2013-11-30 19:15:49

标签: javascript

在以下代码中,除了具有“a id =”id_defined_here“”的人之外,我如何删除li class=""之间的所有元素ul id="videos_list"> ...“? “ul id =”videos_list“>”无法删除。

//Above, other classes and stuff.
 <ul id="videos_list">
    <li class="" style="background-color: rgb(246, 237, 245);"> … </li>
    <li class="" style="background-color: rgb(246, 237, 245);">
        <a id="a_32447256" class="aVideo" ai="2474759"> … </a> 
        <p> … </p>
        <p class="list_lastUp" style="display: block;"> … </p>
        <div class="visuVideo" original-title="visualões"> … </div>
    </li>
    <li class="" style="background-color: rgb(246, 237, 245);"> … </li>
    <li class="" style="background-color: rgb(246, 237, 245);"> … </li>
</ul>
//Bellow, other classes and stuff.

这是我试图做的,但没有用。

var myNode = document.getElementById('videos_list'); 
while( myNode.firstChild ) {
    if( !myNode.firstChild.firstChild.getElementById('a_32447256') {//Id of the example.
        myNode.removeChild( myNode.firstChild );
    }
}

唯一的“li class =”“...&gt;”谁不能被删除的是那个有id = a_32447256的孩子的人。这就是我使用的原因 myNode.firstChild.firstChild,但没有用!

我该怎么做才能解决这个问题?

谢谢!

4 个答案:

答案 0 :(得分:1)

var ul  = document.getElementById('videos_list'),
    li  = ul.getElementsByTagName('li'),
    not = document.getElementById('a_32447256').parentNode;

for (var i=li.length; i--;) {
    if ( li[i] != not ) ul.removeChild(li[i]);
}

FIDDLE

答案 1 :(得分:0)

Array.prototype.slice.call(document.querySelectorAll('#videos_list > li')).forEach(function(element){
    if(element.querySelector('a_32447256').length <1){
        document.querySelector('#videos_list').removeChild(element);
    }
})

检查#a_32447256是否在li元素中。

如果不是,请删除li元素。

答案 2 :(得分:0)

var list = document.getElementById('videos_list'),
    target = document.getElementById('a_32447256');

while (list.firstChild) {
    list.removeChild(list.firstChild);
}
list.appendChild(target.parentNode);

答案 3 :(得分:0)

var keep = document.getElementById('a_32447256').parentNode;
var root = document.getElementById('videos_list');

[].slice.call(root.children).forEach(function(node) {
   if ( node !== keep ) this.removeChild(node);
}, root);