You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取URL全部参数并追加到指定href,且排除s参数的JS实现问题

解决方法

你可以通过删除参数对象中的s字段实现过滤需求,核心修改点如下:

  • 解析当前页面URL的查询参数后,直接删除s键,避免该参数被合并到最终的href中
  • 若需要同时过滤a标签本身自带的s参数,可在参数合并完成后再统一删除一次s键,避免遗漏

修改后完整代码

$(document).ready(function() {
 function querystringToDict(querystring){
    if (querystring.length === 0) {
       return {};
     }
   let queryDict = {}
   querystring.split("&").forEach(function(item) {
      queryDict[item.split("=")[0]] = item.split("=")[1]
   });
      return queryDict;
   }

  var queryDict = querystringToDict(location.search.substr(1));
  // 新增:删除当前URL中的s参数
  delete queryDict['s'];
  var queryHref, queryFinal = {};              
  var lctSearch = location.search;

  $('html a').each(function() {
      // if the href contains www.test.com insert params
     if ($(this).prop('href').includes('www.test.com')){
        if(lctSearch != ''){
           param = $(this).attr('href').split('?')[1] === undefined ? '' : 
                   $(this).attr('href').split('?')[1];
                            
           queryHref = querystringToDict(param);
           queryFinal = Object.assign({}, queryHref, queryDict);
           // 可选新增:同时删除a标签本身携带的s参数
           delete queryFinal['s'];
           paramFinal = Object.keys(queryFinal).map(key => key + '=' + queryFinal[key]).join('&');
           // 优化:如果没有参数就不加问号,避免出现xxx.com/?的情况
           let newHref = $(this).attr('href').split('?')[0];
           if(paramFinal) {
              newHref += '?' + paramFinal;
           }
           $(this).attr('href', newHref);
           }
        } 
    }); 
});

补充说明

以上修改除了实现过滤s参数的需求外,还额外优化了空参数场景的展示,避免没有参数时href末尾多出多余的问号,你可以根据实际需求选择是否保留该优化逻辑。

内容的提问来源于stack exchange,提问作者claudio romano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:09:03