如果我有一个使用history.pushState({}, "", link);
功能更改的链接,例如link
page.php?value=1&value2=2
,是否有办法只更改value2
{ {1}}功能而不是改变整个链接?
答案 0 :(得分:5)
如果您要执行的操作是更改网址而不向历史记录对象添加其他条目,则可以尝试replaceState
。
history.replaceState({value: 1, value2: X}, "title", "page.php");
答案 1 :(得分:2)
不,因为查询字符串是URL的一部分。如果您真的不需要为服务器的目的传递这些值,您可以将它们包含在历史记录的状态对象本身中,然后您可以使用pushState()
更改状态对象。例如:
history.pushState({value: 1, value2: 2}, "Title", 'page.php');
history.pushState({value: 1, value2: 'new value'}, "Title");
答案 2 :(得分:2)
您可以使用此有用功能更改查询字符串参数值:
function updateParam(url, param, value)
{
var re = new RegExp(param+"(.+?)(&|$)","g");
return url.replace(re, param+'='+value)
}