JS-设置或更新URL参数

使用JS设置或更新URL参数的几种方式
第一种,使用正则表达式匹配:

//参数值不为空时,存在参数则更新,否则不操作
function updateQueryStringParameter(uri, key, value) {
	if(!value) {
		return uri;
	}
	var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
	var separator = uri.indexOf('?') !== -1 ? "&" : "?";
	if (uri.match(re)) {
		return uri.replace(re, '$1' + key + "=" + value + '$2');
	}
	else {
		return uri + separator + key + "=" + value;
	}
}
var url = 'http://www.example.html';
url = updateQueryStringParameter(url, 'a', '1');
console.log(url);
url = updateQueryStringParameter(url, 'b', '2');
console.log(url);
url = updateQueryStringParameter(url, 'a', '');
console.log(url);

输出:

http://www.example.html?a=1
http://www.example.html?a=1&b=2
http://www.example.html?a=1&b=2

第二种方式,使用URL对象构造url

var url2 = new URL("http://foo.bar/?x=1&y=2");
console.log(url2.href);
url2.searchParams.append('x', 42);
console.log(url2.href);
url2.searchParams.set('x', 42);
console.log(url2.href);

输出:

http://www.example.html?x=1&y=2
http://www.example.html?x=1&y=2&x=42
http://www.example.html?x=42&y=2

缺点是有些浏览器版本不支持
在这里插入图片描述

https://developer.mozilla.org/en-US/docs/Web/API/URL/URL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值