history.pushState()更改查询值

如果我有一个使用函数history.pushState({}, "", link);更改的history.pushState({}, "", link); 其中我的link是例如page.php?value=1&value2=2有没有办法只使用pushState()函数更改value2而不是更改整个链接?

如果您要执行的操作是更改URL而不向历史记录对象添加其他条目,则可以尝试使用replaceState

 history.replaceState({value: 1, value2: X}, "title", "page.php"); 

不,因为查询字符串是URL的一部分。 如果您不是真的需要为服务器的目的传递这些值,可以将它们包含在历史记录的状态对象本身中,然后您可以使用pushState()更改状态对象。 例如:

 history.pushState({value: 1, value2: 2}, "Title", 'page.php'); history.pushState({value: 1, value2: 'new value'}, "Title"); 

您可以使用此有用的函数来更改查询字符串参数值:

 function updateParam(url, param, value) { var re = new RegExp(param+"(.+?)(&|$)","g"); return url.replace(re, param+'='+value) }