在以下代码中,除了具有“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,但没有用!
我该怎么做才能解决这个问题?
谢谢!
答案 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]);
}
答案 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);