我的默認網址會像在網址替換參數和刷新頁面
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.href = location.origin + location.pathname + '?file=filename';
但是當你有?
後一個參數這隻會工作。如果你有更多 - 你需要解析它們並重新申請。
'location.host'沒有協議,您可以使用'location.origin'('http:// example.com'而不是'example .com') –
@ SamvanKampen我錯過了!非常感謝! – tborychowski
@tborychowski謝謝你的工作... – Hulk1991
你可以試試這個:
location.search = location.search.replace(/file=[^&$]*/i, 'file=filename');
location.search
財產僅保留查詢 URL的一部分,所以你不必擔心URL的任何其他部分(如域或哈希)會被修改。
此外,正則表達式將只替換file
參數。當你在查詢中有一些其他參數時,這很有用。
這實際上是一個非常優雅的方式,因爲它會自動重新加載,並且不需要使用整個URL。 – silent
我適應@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;
}
歡迎2018沒有現成的參數,可以現在就可以使用mostly到URLSearchParams處理解析也正在和更換你
更強勁var params = new URLSearchParams(location.search);
params.set('file', 'sample');
window.location.search = params.toString();
URLSearchParams將根據需要替換或添加參數到查詢字符串。
location.href = location.href.replace(/ sample /,「filename」) – Reeno
@Reeno這可能很好,但對於下一個文件選擇...? – Hulk1991
你想替換'?file = sample'嗎? –