js去除url中指定引數

風靈使發表於2019-04-18

在專案中,遇到有引數只需要彈出一次,彈出後返回時就會再次彈出,所以需要將彈出引數取消:
程式碼如下:

function delParam(paramKey) {
        var url = window.location.href;    //頁面url
        var urlParam = window.location.search.substr(1);   //頁面引數
        var beforeUrl = url.substr(0, url.indexOf("?"));   //頁面主地址(引數之前地址)
        var nextUrl = "";

        var arr = new Array();
        if (urlParam != "") {
            var urlParamArr = urlParam.split("&"); //將引數按照&符分成陣列
            for (var i = 0; i < urlParamArr.length; i++) {
                var paramArr = urlParamArr[i].split("="); //將引數鍵,值拆開
                //如果鍵雨要刪除的不一致,則加入到引數中
                if (paramArr[0] != paramKey) {
                    arr.push(urlParamArr[i]);
                }
            }
        }
        if (arr.length > 0) {
            nextUrl = "?" + arr.join("&");
        }
        url = beforeUrl + nextUrl;
        return url;
    }

javascript 刪除 url 中指定引數,並返回 url

而今天就是遇到要刪除某個引數的問題.鬱悶,於是,寫了這個函式.

實現程式碼

// 刪除url中某個引數,並跳轉
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
    };
}

功能:刪除url中指定的引數,並返回刪除引數後的完整url

使用方法

示例

url: http//xx.com/list?page=1&a=5

執行程式碼

funcUrlDel("page")

返回

http//xx.com/list?a=5

其他說明

會忽略 hash 值,如果需要,自行加上即可.


JS-刪除url引數

function removeURLParameter(url, parameter) {
	var urlparts = url.split('?');
	if(urlparts.length >= 2) {
		//引數名字首
		var prefix = encodeURIComponent(parameter) + '=';
		var pars = urlparts[1].split(/[&;]/g);

		//迴圈查詢匹配引數
		for(var i = pars.length; i-- > 0;) {
			if(pars[i].lastIndexOf(prefix, 0) !== -1) {
				//存在則刪除
				pars.splice(i, 1);
			}
		}

		return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
	}
	return url;
}

js 對url進行某個引數的刪除,並返回url

兩種情況

1.對當前頁面的url進行操作

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
        }else{
            return window.location.href;
        };
    }
console.log(funcUrlDel('tt'));

2.對特定的url進行處理

function urlDelP(url,name){
        var urlArr = url.split('?');
        if(urlArr.length>1 && urlArr[1].indexOf(name)>-1){
            var query = urlArr[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 urlte = urlArr[0] +'?'+ JSON.stringify(obj).replace(/[\"\{\}]/g,"").replace(/\:/g,"=").replace(/\,/g,"&");
            return urlte;
        }else{
            return url;
        };
    }
console.log(urlDelP('http://test.com/test?tt=3&kk=6','tt'));
console.log(urlDelP('http://test.com/test?kk=6&ll=88','tt'));

js 獲取url並刪除指定引數

//返回引數字串
function remove_arg_from_url(arg_name_removed) {
    //設定或獲取 href 屬性中跟在問號後面的部分。
    var url = window.location.search;
    var arr = [];
    var query_string = "";
    if ( url.lastIndexOf('?') == 0) {
        //擷取
        var arg_str = url.substr( url.lastIndexOf('?') +1, url.length);
        if (arg_str.indexOf('&') != -1) {
            var arr = arg_str.split('&');
            for (var i in arr) {
                if (arr[i].split('=')[0] != arg_name_removed) {
                    query_string = query_string + arr[i].split('=')[0] + "=" + arr[i].split('=')[1] + "&";
                }
            }
            return query_string.substr(0, query_string.length - 1);
        }
    }
}
//正則匹配
function remove_arg_from_url( name ){
    //從當前URL的?號開始的字串
    //如:http://www.baidu.com/s?wd=baidu&cl=3 它的search就是?wd=baidu&cl=3
    var query_string = window.location.search.substr(1);
    //如果沒有引數則返回空
    if (query_string != undefined) {
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
        return query_string.replace(reg,'');
    }
    return '';
}

//獲取url中的引數
function getUrlParam(str ,name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //構造一個含有目標引數的正規表示式物件
    var r = str.match(reg);  //匹配目標引數
    console.log(r);
    if (r != null) return decodeURI(r[2]); return null; //返回引數值
}

相關文章