我的默认网址就像
http://localhost:4444/index.html?file=sample
我有一个包含各种文件名的下拉列表,我想通过点击下拉列表替换参数sample
。
对于每次更改,都应使用现有参数更改URL。
我试着跟着,
location.href = location.href + "filename" ;
但它不会取代文件名。
答案 0 :(得分:12)
你可以试试这个:
location.search = location.search.replace(/file=[^&$]*/i, 'file=filename');
location.search
属性仅包含URL的查询部分,因此您不必担心该网址的任何其他部分(例如域或哈希)将被修改。登记/>
此外,正则表达式将仅替换file
参数。当您在查询中有其他参数时非常有用。
答案 1 :(得分:8)
一种方法是:
location.href = location.origin + location.pathname + '?file=filename';
但只有在?
之后有一个参数时,这才有效。如果您有更多 - 您需要解析它们并重新申请。
答案 2 :(得分:5)
欢迎来到2018年,您现在可以mostly使用URLSearchParams来处理解析并替换您获取
var params = new URLSearchParams(location.search);
params.set('file', 'sample');
window.location.search = params.toString();
URLSearchParams会根据需要将参数替换或添加到查询字符串中。
答案 3 :(得分:0)
当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;
}