Javascript 如何根据标记等条件删除子元素,

Javascript 如何根据标记等条件删除子元素,,javascript,html,css,Javascript,Html,Css,我想知道如何删除具有一些条件的父元素的子元素,如标记、类、属性 <div class="parent"> <a class="child_a" ... <div class="middle" ... <input class='child_last" ... </div> 我解决这个问题的方法是获取父元素元素,进行查询选择以获取它的子元素,将子元素转换为一个数组,然后迭代它,一次删除一个子元素 因此,让我们假设我要筛选父级的子级,以仅获取

我想知道如何删除具有一些条件的父元素的子元素,如标记、类、属性

<div class="parent">
  <a class="child_a" ...
  <div class="middle" ...
  <input class='child_last" ...
</div>


我解决这个问题的方法是获取
父元素
元素,进行查询选择以获取它的
子元素
,将
子元素
转换为一个数组,然后迭代它,一次删除一个子元素

因此,让我们假设我要筛选
父级
的子级,以仅获取具有
目标
类的元素:

const parent = document.getElementById('#parent')
const children = parent.querySelectorAll('.target')

[...children].forEach(child => parent.removeChild(child)
您还可以将其抽象为一个通用函数,该函数接收给定的
父级
和一组
子级

const removeChildren = (parent, ...children) => children.forEach(child => parent.removeChild(child))
// ...
const parent = document.getElementById('parent');
const targets = parent.querySelectorAll('.target');
removeChildren(parent, ...targets);

使用
forEach()
而不是
map()
是很重要的,因为
removeChild()
实际上返回一个值,即刚刚删除的节点。我不认为归还这样的东西有什么意思,所以宁愿什么也不归还

您可以使用这些条件

 let parent = document.getElementsByClassName('parent')[0];
 parent.childNodes.forEach(c=>{
 if(c.className  == 'child_a'){
    parent.removeChild(c);
 }

 if(c.tagName  == 'INPUT'){
    parent.removeChild(c);
 }

 if(c.tagName != undefined && c.getAttribute('src') == 'test'){
    parent.removeChild(c);
 }
}))

let parent=document.getElementsByClassName('parent')[0];
parent.childNodes.forEach(c=>{
如果(c.className=='child_a'){
父母。removeChild(c);
}
如果(c.tagName==“输入”){
父母。removeChild(c);
}
如果(c.tagName!=未定义&&c.getAttribute('src')=='test'){
父母。removeChild(c);
}
});

A.
DIV

请尽可能多地编写代码,以确定以后的问题所在