js删除 url 中指定参数,并返回 url

实现代码:history模式

// 删除url中某个参数,并跳转

function funcUrlDel(name){

    var loca = window.location;

    var baseUrl = loca.origin + loca.pathname + "?";

    var query = loca.search.substr(1);

    if (query.indexOf(name)>-1) {

        var obj = {}

        var arr = query.split("&");

        for (var i = 0; i < arr.length; i++) {

            arr[i] = arr[i].split("=");

            obj[arr[i][0]] = arr[i][1];

        };

        delete obj[name];

        var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g,"").replace(/\:/g,"=").replace(/\,/g,"&");

        return url

    };

}

hash模式:

function funcUrlDel(name) {

    var loca = window.location;

    var baseUrl = loca.origin + loca.pathname;

    var query = loca.hash;

    if (query.indexOf(name) > -1) {

      var obj = {}

      var arr = query.split("&");

      for (var i = 0; i < arr.length; i++) {

        arr[i] = arr[i].split("=");

        obj[arr[i][0]] = arr[i][1];

      };

      delete obj[name];

      var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&");

      return url;

    }

  },

注意

1.URL:http://b.a.com:88/index.php?name=kang&how=#when=2016#first

search:"?name=kang&how="     第一个"?"之后

hash:"#when=2016#first"        第一个"#"之后的内容

2,为什么 window.location.search 为空?

答:注意上面的search和hash的区别,如果URL中“?”之前有一个“#”比如:“http://localhost:63342/index.html#/version?type=35&id=5”那么使用window.location.search得到的就是空(“”)。因为“?type=35&id=5”串字符是属于“#/version?type=35&id=5”这个串字符的,也就是说查询字符串search只能在取到“?”后面和“#”之前的内容,如果“#”之前没有“?”search取值为空。

你可能感兴趣的:(js删除 url 中指定参数,并返回 url)