替换URL中的参数 - 两个参数

时间:2018-03-08 15:53:38

标签: javascript jquery

我有一个简单的替换参数的脚本:

function replaceQueryParam(param, newval, search) {
//condition over accumulation & in url if I use null
if(newval == null){
    ampersand = "";
} else{
    ampersand = "&";
}

var regex = new RegExp("([?;&])" + param + "[^&;]*[;&]?");
var query = search.replace(regex, "$1").replace(/&$/, '');

return (query.length > 2 ? query + ampersand : "?") + (newval ? param + "=" + newval : '');

}

我用它:

var str = window.location.search
str = replaceQueryParam('myParam', 'myValue', str)
window.location = window.location.pathname + str

它运行完美,但我想使用函数编辑参数只有一个重定向。如果我在onClick事件中有它,我不能使用:

var str = window.location.search
str = replaceQueryParam('myParam', 'myValue', str)
window.location = window.location.pathname + str

var str = window.location.search
str = replaceQueryParam('SecondParam', 'null', str)
window.location = window.location.pathname + str

第二个参数我想要null(我想从url中删除第二个参数) - 如果它是简单的。

谢谢,对不起我的英文

PS:它可以通过jquery

我的所有活动:

$("#typ span").click(function() {
    var url = window.location.href;  
        //if it exist
    if (url.indexOf('typ') > -1){
         var str = window.location.search
         str = replaceQueryParam('typ', $(this).attr('id'), str)
         window.location = window.location.pathname + str

        //if its doesnt exist - add new
    } else {
        if (url.indexOf('?') > -1){
           url += '&typ='+$(this).attr('id');
        }else{
           url += '?typ='+$(this).attr('id');
        }
        window.location.href = url;
    }
});

如果单击span我想要这样做(添加或替换" typ")并将其他参数(如果存在)置空 - 只有一个重定向。

1 个答案:

答案 0 :(得分:0)

查看现有的URL interface

示例:

const url = new URL('http://test.com/products?category=bears&page=3');
url.searchParams.set('category', 'puppies');
console.log(url.href); // Result: http://test.com/products?category=puppies&page=3