无需jQuery:如何通过数组批量移除页面动态加载的指定元素?
优化Tampermonkey脚本:批量移除随机出现的页面元素
嘿,恭喜你接触JavaScript才一周就捣鼓出Tampermonkey脚本啦,这个动手能力真不错!你想用数组来简化代码的思路完全正确,而且能让你的脚本更简洁、更容易维护。
方案一:数组存储选择器 + 遍历处理
我们可以把所有需要移除的元素选择器统一放进一个数组里,然后遍历这个数组,逐个查询元素并移除。这样就不用重复写变量和if判断了:
// 把所有目标元素的CSS选择器存入数组 const targetSelectors = [ '#wrapper > footer > div > div > div:nth-child(2) > span', '#wrapper > footer > div > div > div:nth-child(3) > span', '#wrapper > footer > div > div > div:nth-child(4) > span', '#wrapper > footer > div > div > div:nth-child(5) > span', '#wrapper > footer > div > div > div:nth-child(36) > span' ]; // 遍历数组,处理每个选择器对应的元素 targetSelectors.forEach(selector => { const element = document.querySelector(selector); if (element) { element.remove(); } });
更简洁的写法:使用可选链操作符
如果你使用的Tampermonkey支持ES2020及以上的语法(现在大多数环境都支持),还可以用可选链操作符(?.)来简化if判断,一行代码完成元素查询和移除:
const targetSelectors = [ '#wrapper > footer > div > div > div:nth-child(2) > span', '#wrapper > footer > div > div > div:nth-child(3) > span', '#wrapper > footer > div > div > div:nth-child(4) > span', '#wrapper > footer > div > div > div:nth-child(5) > span', '#wrapper > footer > div > div > div:nth-child(36) > span' ]; targetSelectors.forEach(selector => { // 可选链会自动处理元素不存在的情况,避免报错 document.querySelector(selector)?.remove(); });
这个写法的好处是:如果querySelector没找到元素(返回null),?.会直接终止后续操作,不会执行remove(),也就不会抛出错误,代码更精简。
额外小技巧:用querySelectorAll批量获取元素
如果你的目标元素选择器有一定规律,也可以用document.querySelectorAll一次性获取所有匹配的元素,然后批量移除:
// 用逗号分隔多个选择器,一次性获取所有目标元素 const targetElements = document.querySelectorAll(` #wrapper > footer > div > div > div:nth-child(2) > span, #wrapper > footer > div > div > div:nth-child(3) > span, #wrapper > footer > div > div > div:nth-child(4) > span, #wrapper > footer > div > div > div:nth-child(5) > span, #wrapper > footer > div > div > div:nth-child(36) > span `); // 遍历并移除每个元素 targetElements.forEach(element => element.remove());
这种方式适合选择器比较相似的场景,和数组遍历的方式各有优劣,你可以根据自己的习惯选择。
总的来说,用数组来管理选择器的方式能让你的代码扩展性更好——以后要新增需要移除的元素,只需要在数组里加一行选择器就行,不用再重复写相似的变量和判断逻辑。继续加油呀,一周能做到这样已经很棒了!
内容的提问来源于stack exchange,提问作者Rufio Bangarang
相关产品推荐
相关产品推荐

