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
请尽可能多地编写代码,以确定以后的问题所在