Javascript 简明地删除DOM元素(如果存在)?

Javascript 简明地删除DOM元素(如果存在)?,javascript,dom,removechild,Javascript,Dom,Removechild,我目前正在编写一个浏览器脚本(用于Tampermonkey/Greasemonkey)(并在此过程中学习JS!),我有很多类似的例子: let btn=document.querySelector(“unwantedButton”); 如果(btn){ btn.parentNode.removeChild(btn); } 也就是说,我希望删除某个元素,如果它存在的话 有没有办法写得更简洁优雅?这将在这个项目中为我节省很多行,最重要的是,教我一些JS最佳实践。:-) 谢谢你帮助一个JS noob

我目前正在编写一个浏览器脚本(用于Tampermonkey/Greasemonkey)(并在此过程中学习JS!),我有很多类似的例子:

let btn=document.querySelector(“unwantedButton”);
如果(btn){
btn.parentNode.removeChild(btn);
}
也就是说,我希望删除某个元素,如果它存在的话

有没有办法写得更简洁优雅?这将在这个项目中为我节省很多行,最重要的是,教我一些JS最佳实践。:-)


谢谢你帮助一个JS noob

您可以将代码放入函数中(并使用
remove()
),而不是在几个地方重写代码:

然后你可以到处叫它:

removeIfExists("#some-unwanted-element")
如果有不需要的已知元素列表,也可以使用它:

var badElements = [ ".foo", "#bar", "#etc" ]
badElements.forEach(removeIfExists)

可以将其作为多个元素的函数

const removeElements = refs => document.querySelectorAll(refs)
                                .forEach(el=>{if(!!el) el.remove()})
用法:

removeElements('#unwantedButton')


现在我想起来了,我可能应该让它成为一个函数,或者循环一系列不需要的元素。无论如何,我还是把它打开,因为我想知道你的想法和想法。我相信有更好的方法来编写它!谢谢!不要使用queryselector,只需document.getElementById(“unwantedButton”)是simplerThank you@SuperFormer。我一开始确实使用了它,但切换到了
querySelector
,因为它比
getElementById
短。为什么更好呢?我有时还必须基于类访问元素,使用
querySelector
比使用
getElementsByClass(…)[0]
,至少对我来说,我对JS及其标准功能了解有限。很难说哪一个更好,因为这取决于用例。浏览器支持范围更广(例如IE6)对于
getElementById
,但它在您的情况下不太可能有意义。我会选择
querySelector
,因为它具有灵活性。谢谢您,Zac!这太完美了。非常好的学习。感谢您的快速响应!很好,我忘了
querySelector所有
都可以使用逗号分隔的列表!
removeElements('#unwantedButton')
removeElements('.foo, #bar, #etc')