我的默认网址就像
http://localhost:4444/index.html?file=sample
我有一个包含各种文件名的下拉列表,我想sample
通过单击下拉列表来替换参数。
对于每一个更改,都应使用现有参数更改 URL。
我试过以下,
location.href = location.href + "filename" ;
但它不会替换文件名。
我的默认网址就像
http://localhost:4444/index.html?file=sample
我有一个包含各种文件名的下拉列表,我想sample
通过单击下拉列表来替换参数。
对于每一个更改,都应使用现有参数更改 URL。
我试过以下,
location.href = location.href + "filename" ;
但它不会替换文件名。
你可以试试这个:
location.search = location.search.replace(/file=[^&$]*/i, 'file=filename');
location.search
属性只保存 URL 的查询部分,因此您不必担心 URL 的任何其他部分(例如域或哈希)会被修改。
此外,正则表达式将仅替换file
参数。当您在query中有一些其他参数时,它很有用。
欢迎来到 2018,您现在可以主要使用URLSearchParams来处理您得到的解析和替换
var params = new URLSearchParams(location.search);
params.set('file', 'sample');
window.location.search = params.toString();
URLSearchParams将根据需要将参数替换或添加到查询字符串。
一种方法是:
location.href = location.origin + location.pathname + '?file=filename';
但这只有在?
. 如果你有更多 - 你需要解析它们并重新申请。
我通过在没有现有参数的情况下也工作来调整@matewka 答案以使其更加健壮window.location.search
var filename = 'myFilename.csv';
var paramName = 'file';
var newParam = paramName + '=' + filename;
if(window.location.search){
var regex = new RegExp(paramName + '=[^&$]*', 'i');
window.location.search = window.location.search.replace(regex, newParam);
}else{
window.location.search = newParam;
}