繁体   English   中英

如果没有 jQuery,我如何有选择地删除数组中存在的元素?

[英]Without jQuery, how could I selectively remove elements that exist in an array?

在创建了一些 Tampermonkey 脚本之后,我现在才开始使用 Javascript 大约一个星期。

我正在处理的页面具有动态元素,这些元素基本上随着每个页面加载而随机弹出。 例如,有时页面只会加载一个“here”元素,而在不同的页面加载时,我可能只看到加载了“what”和“doing”。 在每个页面加载时,我希望让我的脚本扫描所有这些元素,并删除任何已加载的元素。

值得庆幸的是,它们的选择器路径很容易找到,但我正在寻找一种更好看/更简单的方法来让我的脚本找到这 5 个元素中的任何一个。 这是一直在工作的布局:

var what = document.querySelector('#wrapper > footer > div > div > div:nth-child(3) > span')
var am = document.querySelector('#wrapper > footer > div > div > div:nth-child(2) > span')
var i = document.querySelector('#wrapper > footer > div > div > div:nth-child(36) > span')
var doing = document.querySelector('#wrapper > footer > div > div > div:nth-child(4) > span')
var here = document.querySelector('#wrapper > footer > div > div > div:nth-child(5) > span')

if (what) {
    what.remove();
}
if (am) {
    am.remove();
}
if (i) {
    i.remove();
}
if (doing) {
    doing.remove();
}
if (here) {
    here.remove();
}

拥有大量 IF 语句当然会起作用,而且我有一种强烈的感觉,将我所有的变量添加到一个数组中将是最干净的方法,但是到目前为止,在研究了数组和数组语句之后,我还不太清楚知道什么是我最好的选择。

理想情况下,我的目标是:

var group = [what, am, i, doing, here]
if (group.includes == true)
true.remove();

..或类似的东西。 有没有比我目前使用大量 IF 语句的方法更好的方法来做到这一点?

差不多了 - 只需使用forEach循环遍历groupremove每个项目(如果存在):

var what = document.querySelector('#wrapper > footer > div > div > div:nth-child(3) > span')
var am = document.querySelector('#wrapper > footer > div > div > div:nth-child(2) > span')
var i = document.querySelector('#wrapper > footer > div > div > div:nth-child(36) > span')
var doing = document.querySelector('#wrapper > footer > div > div > div:nth-child(4) > span')
var here = document.querySelector('#wrapper > footer > div > div > div:nth-child(5) > span')

var group = [what, am, i, doing, here];

group.forEach(item => {
    if (item) item.remove();
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM