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

window.location.href重复追加URL:如何实现仅切换企业类型

解决下拉框跳转URL重复追加的问题

这个问题的核心是相对路径的使用导致的URL拼接错误——当你在/companies/type/bank/页面时,'type/'+companyType+'/'是相对于当前页面所在目录的相对路径,自然会在现有路径后继续追加,造成重复。

下面给你几种可靠的解决方法:

方法1:使用根目录开头的绝对路径

直接从网站根目录开始构建URL,这样无论当前页面在哪个层级,都会跳转到正确的位置:

function changeCompanyType(companyType) {
  window.location.href = '/companies/type/'+companyType+'/';
}

这里的/开头表示从网站根目录出发,最终会生成http://127.0.0.1/companies/type/hospital/这类正确的URL。

方法2:利用URL对象构建(更健壮)

如果你的URL结构可能有变化,用原生的URL对象来处理会更可靠,能避免手动拼接的错误:

function changeCompanyType(companyType) {
  // 基于当前域名构建完整URL
  const baseUrl = new URL(window.location.origin + '/companies/type/');
  baseUrl.pathname += companyType + '/';
  window.location.href = baseUrl.toString();
}

这种方法会确保路径始终是正确的层级,不会出现重复追加的问题。

方法3:替换现有路径中的type部分

如果你需要保留当前URL的其他参数或层级,可以解析并替换现有路径里的企业类型部分:

function changeCompanyType(companyType) {
  // 匹配当前路径中的type/xxx/部分,替换为新的类型
  const newPath = window.location.pathname.replace(/type\/[^\/]+\/?/, `type/${companyType}/`);
  window.location.href = window.location.origin + newPath;
}

这个方法适合页面还有其他路径参数需要保留的场景,比如/companies/region/beijing/type/bank/,替换后会变成/companies/region/beijing/type/hospital/。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:16:16