如何在JavaScript中获取页面所有链接并排除指定内容链接?
解决方法
你只需要在收集链接前加个判断条件,过滤掉包含指定关键词的链接就行,给你两种实现方式:
方式一:修改原有循环代码
直接在你的代码里添加判断逻辑,跳过包含"google"的链接:
var array = []; var links = document.getElementsByTagName("a"); for(var i=0, max=links.length; i<max; i++) { // 排除包含"google"的链接 if (!links[i].href.includes("google")) { array.push(links[i].href); } }; console.table(array);
如果需要忽略大小写(比如同时排除"Google"、"GOOGLE"),可以把链接转成小写再判断:
var array = []; var links = document.getElementsByTagName("a"); for(var i=0, max=links.length; i<max; i++) { var href = links[i].href.toLowerCase(); if (!href.includes("google")) { array.push(links[i].href); } }; console.table(array);
方式二:用更简洁的现代JS写法
如果你想尝试更简洁的代码,可以用querySelectorAll结合数组的filter和map方法:
// 把所有a标签转成数组,提取href后过滤掉含"google"的链接 const filteredLinks = Array.from(document.querySelectorAll('a')) .map(link => link.href) .filter(href => !href.includes('google')); console.table(filteredLinks);
补充说明
includes('关键词')用来检查字符串里是否包含指定内容,返回布尔值,前面加!表示取反(即不包含的才保留)- 如果需要兼容非常旧的浏览器,可以把
includes换成indexOf('google') === -1,逻辑是一样的:当字符串不包含指定内容时,indexOf会返回-1
内容的提问来源于stack exchange,提问作者erniberni
相关产品推荐
相关产品推荐

