使用JavaScript删除URL的参数

Jow*_*ows 42 javascript

原始网址:

http://yourewebsite.php?id=10&color_id=1
Run Code Online (Sandbox Code Playgroud)

结果URL:

http://yourewebsite.php?id=10
Run Code Online (Sandbox Code Playgroud)

我得到了添加Param的功能

function insertParam(key, value){
    key = escape(key); value = escape(value);
    var kvp = document.location.search.substr(1).split('&');
    var i=kvp.length; var x; while(i--) 
    {
        x = kvp[i].split('=');

        if (x[0]==key)
        {
            x[1] = value;
            kvp[i] = x.join('=');
            break;
        }
    }
    if(i<0) {kvp[kvp.length] = [key,value].join('=');}

    //this will reload the page, it's likely better to store this until finished
    document.location.search = kvp.join('&'); 
}
Run Code Online (Sandbox Code Playgroud)

但我需要运行以删除Param

小智 90

试试这个.只需传入要从URL和原始URL值中删除的参数,该函数将为您删除它.

function removeParam(key, sourceURL) {
    var rtn = sourceURL.split("?")[0],
        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 === key) {
                params_arr.splice(i, 1);
            }
        }
        rtn = rtn + "?" + params_arr.join("&");
    }
    return rtn;
}
Run Code Online (Sandbox Code Playgroud)

要使用它,只需执行以下操作:

var originalURL = "http://yourewebsite.com?id=10&color_id=1";
var alteredURL = removeParam("color_id", originalURL);
Run Code Online (Sandbox Code Playgroud)

var alteredURL将是您想要的输出.

希望能帮助到你!

  • 如果它删除所有参数,你可能不想使用这一行:rtn = rtn +"?" + params_arr.join("&"); 你想先测试params_arr.length> 0. (5认同)
  • 不错.最后用简单的检查来改变它的params_arr长度,所以我们不会得到"?" 如果没有更多的参数留下.像这样:if(params_arr.length> 0){rtn = rtn +"?" + params_arr.join("&"); } (4认同)
  • 哇谢谢。真的对我有帮助。非常感谢。 (2认同)

Aru*_*n C 12

function removeParam(parameter)
{
  var url=document.location.href;
  var urlparts= url.split('?');

 if (urlparts.length>=2)
 {
  var urlBase=urlparts.shift(); 
  var queryString=urlparts.join("?"); 

  var prefix = encodeURIComponent(parameter)+'=';
  var pars = queryString.split(/[&;]/g);
  for (var i= pars.length; i-->0;)               
      if (pars[i].lastIndexOf(prefix, 0)!==-1)   
          pars.splice(i, 1);
  url = urlBase+'?'+pars.join('&');
  window.history.pushState('',document.title,url); // added this line to push the new url directly to url bar .

}
return url;
}
Run Code Online (Sandbox Code Playgroud)

这将解决您的问题

  • 我使用document.location.search而不仅仅是拆分,它需要像这样添加的东西来保留哈希if(document.location.hash){url = url + document.location.hash; } (2认同)