使用Javascript修改任意URL的参数

使用Javascript修改任意URL的参数,javascript,Javascript,我想使用Javascript更改URL中可用的任何参数 例: => 我尝试了几种方法,但没有达到预期的效果。您可以帮我解决吗?您正在更改的URL部分是查询字符串,可从位置。搜索属性获得。它是一个由URI编码的键=值对分隔的序列 您可以按如下方式将其拆分: var search = location.search.charAt(0) === '?' ? location.search.substring(1) : location.search; var pairs = search.split(

我想使用Javascript更改URL中可用的任何参数

例: =>


我尝试了几种方法,但没有达到预期的效果。您可以帮我解决吗?

您正在更改的URL部分是查询字符串,可从
位置。搜索
属性获得。它是一个由URI编码的
键=值
对分隔的序列

您可以按如下方式将其拆分:

var search = location.search.charAt(0) === '?' ? location.search.substring(1) : location.search;
var pairs = search.split('&').map(function(pair) {
    return pair.split('=');
});
然后搜索
查找
对[0]
kw
的一个,并替换其值:

pairs.some(function(pair) {
    if (pair[0] === 'kw') {
        pair[1] = encodeURIComponent(yourNewValue);
        return true;
    }
});
Array#一些
循环遍历数组的条目,并在从回调返回
true
时停止。)

然后分配结果:

location.search = '?' + pairs.join('&');
…将在窗口中加载带有新查询字符串的页面



旁注:上面使用了自ES5以来新的两个阵列特性。两者都是“可填充”的,所以如果您需要支持IE8,您将需要ES5填充。(搜索“es5垫片”将为您提供选项。)

因此,如果我理解正确,您只需更新URL即可。然后你只需要编辑它

使用jQuery:

$("#myLink").attr("href", myNewHref);
纯Javascript:

myLink.href = myNewHref;

其中
myNewHref
可以使用字符串操作进行更新,例如
split
函数或正则表达式来获取URL()的第一部分,然后在字符“?”后获取参数。

“我尝试了几种方法”比如什么?“……但没有达到预期的效果。”以何种方式?发生了什么事而不是你期望的?仅供参考-我尝试了你的
map
code
array[index]=pair.split('='),但这对我(ChromeV33)不起作用,因为
对[0]
对[1]
被设置为
未定义的
。相反,我不得不使用
returnpair.split('=')哪一个起了作用。@JasonEvans:啊,是的,我在那里做了两件事的组合。使用
map
并返回拆分,或者使用
forEach
(并分别创建数组)。她打字太快了。固定的。