js刪除 url 中指定參數(shù),并返回 url

實現(xiàn)代碼:history模式

// 刪除url中某個參數(shù),并跳轉(zhuǎn)

function funcUrlDel(name){

? ? var loca = window.location;

? ? var baseUrl = loca.origin + loca.pathname + "?";

? ? var query = loca.search.substr(1);

? ? if (query.indexOf(name)>-1) {

? ? ? ? var obj = {}

? ? ? ? var arr = query.split("&");

? ? ? ? for (var i = 0; i < arr.length; i++) {

? ? ? ? ? ? arr[i] = arr[i].split("=");

? ? ? ? ? ? obj[arr[i][0]] = arr[i][1];

? ? ? ? };

? ? ? ? delete obj[name];

? ? ? ? var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g,"").replace(/\:/g,"=").replace(/\,/g,"&");

? ? ? ? return url

? ? };

}

hash模式:

function?funcUrlDel(name)?{

????var?loca?=?window.location;

????var?baseUrl?=?loca.origin?+?loca.pathname;

????var?query?=?loca.hash;

????if?(query.indexOf(name)?>?-1)?{

??????var?obj?=?{}

??????var?arr?=?query.split("&");

??????for?(var?i?=?0;?i?<?arr.length;?i++)?{

????????arr[i]?=?arr[i].split("=");

????????obj[arr[i][0]]?=?arr[i][1];

??????};

??????delete?obj[name];

??????var?url?=?baseUrl?+?JSON.stringify(obj).replace(/[\"\{\}]/g,?"").replace(/\:/g,?"=").replace(/\,/g,?"&");

??????return?url;

????}

??},

注意

1.URL:http://b.a.com:88/index.php?name=kang&how=#when=2016#first

search:"?name=kang&how=" ? ? 第一個"?"之后

hash:"#when=2016#first" ? ? ? ?第一個"#"之后的內(nèi)容

2,為什么 window.location.search 為空?

答:注意上面的search和hash的區(qū)別,如果URL中“?”之前有一個“#”比如:“http://localhost:63342/index.html#/version?type=35&id=5”那么使用window.location.search得到的就是空(“”)。因為“?type=35&id=5”串字符是屬于“#/version?type=35&id=5”這個串字符的,也就是說查詢字符串search只能在取到“?”后面和“#”之前的內(nèi)容,如果“#”之前沒有“?”search取值為空。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容