替换并添加3个不同的参数到网址

时间:2016-02-03 13:52:48

标签: javascript jquery

我有一个脚本,当我点击指定的按钮时会在网址中添加一个参数 - 下一次单击会将其替换为新的参数 - 这项工作很棒。

然而 - 现在我有三个按钮 - 我希望每个按钮都为网址分配一个参数 - 并替换任何其他按钮添加的任何参数。它也需要放在已经存在的参数之后。

所以:

 (button1)  click3:  /m4n?ecom-query=imac&seid=etailer-products&viewMode=3?param=grid
 (button2)  click4:  /m4n?ecom-query=imac&seid=etailer-products&viewMode=3?param=list
 (button3)  click5:  /m4n?ecom-query=imac&seid=etailer-products&viewMode=3?param=smalllist

之前的网址?param是动态的,看起来可能不同。

$('.click2').on('click', function() {
    console.log("Clicked");
    var url = window.location.pathname;
    var url = window.location.href;
    if (url.indexOf('?param=list') > -1) {
        url = url.replace("?param=list", "") + '?param=grid'
    } else {
        url = url.replace("?param=grid", "") + '?param=list'
    }
    window.location.href = url;
});

我该怎么做,我试图修改我现有的脚本,但没有运气。

1 个答案:

答案 0 :(得分:1)

我认为您的方法存在一个小错误: url中的所有参数都应与& 所以现在你的网址应该是那样的

 /m4n?ecom-query=imac&seid=etailer-products&viewMode=3&param=grid

现在如果你想要替换旧的婴儿车,你还需要删除旧的值。为此,您可以使用正则表达式,如下面的代码

url = url.replace(/\&param=.*/,'') + '&param=list'

所以完整的代码是:

$('.click2').on('click', function() {
    console.log("click2 Clicked");
    var url = window.location.href;
    url = url.replace(/\&param=.*/,'') + '&param=list';
    window.location.href = url;
});

希望有所帮助