在项目中,遇到有参数只需要弹出一次,弹出后返回时就会再次弹出,所以需要将弹出参数取消:
代码如下:

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; //返回参数值
}

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐