替换URL中的参数并刷新页面

Hul*_*991 7 javascript url

我的默认网址就像

http://localhost:4444/index.html?file=sample
Run Code Online (Sandbox Code Playgroud)

我有一个包含各种文件名的下拉列表,我想sample通过单击下拉列表来替换参数.
对于每个更改,应使用现有参数更改URL.

我试着跟着,

location.href = location.href + "filename" ;
Run Code Online (Sandbox Code Playgroud)

但它不会取代文件名.

mat*_*wka 12

你可以试试这个:

location.search = location.search.replace(/file=[^&$]*/i, 'file=filename');
Run Code Online (Sandbox Code Playgroud)

location.searchproperty仅保存URL 的查询部分,因此您不必担心URL的任何其他部分(例如域或哈希)将被修改.
此外,正则表达式将仅替换file参数.当您在查询中有其他参数时,它很有用.


Dzi*_*owy 8

一种方法是:

location.href = location.origin + location.pathname + '?file=filename';
Run Code Online (Sandbox Code Playgroud)

但这只有在你有一个参数后才有效?.如果你有更多 - 你需要解析它们并重新申请.


Jér*_*lay 5

欢迎来到2018年,您现在可以大都使用URLSearchParams处理解析和更换你

var params = new URLSearchParams(location.search);
params.set('file', 'sample');
window.location.search = params.toString();
Run Code Online (Sandbox Code Playgroud)

URLSearchParams将根据需要替换或将参数添加到查询字符串中。