Javascript double string.replace()

时间:2017-03-14 17:37:10

标签: javascript

我正在努力学习一些魔法。我正试图在点击时删除URL中的参数值:

 function removeParam(name, value) {
    var newUrl = window.location.href.split("?")[0],
            sourceURL = window.location.href,
    param,
    params_arr = [],
    queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
    params_arr = queryString.split("&");
    for (var i = params_arr.length - 1; i >= 0; i -= 1) {
        param = params_arr[i].split("&")[0];
        if (param.indexOf(name) !== -1) {
            if (params_arr[i].indexOf("%s") !== -1) {
                params_arr[i] = param.replace("%s" + value , "");
                params_arr[i] = param.replace(value , "");

            }
            else {
                params_arr[i] = param.replace(name + "=" + value, "");
            }
        }
    }
    if (params_arr[0] !== "") {
        newUrl = newUrl + "?" + params_arr.join("&");
    }

}
window.history.pushState(null,"", newUrl);

var 中删除值 C
来源网址:/?var=A%sB%sC
URL-should-be:/?var=A%sB

我可以有多个参数,对应的值如 来源网址:/?var=A%sB%sC&var2=D%sE%sF

但神奇的是,如果我添加第二个str:params_arr[i] = param.replace(value , ""); 它只会删除没有分隔符的 C %s

如何解决?

我添加了第二个替换,因为我需要从头部删除值。

1 个答案:

答案 0 :(得分:0)

之前已经回答过,试试这个

{{1}}

https://stackoverflow.com/a/1634841/3511012