How to replace url parameter with javascript/jquery?

前端 未结 17 2315
旧时难觅i
旧时难觅i 2020-11-28 04:06

I\'ve been looking for an efficient way to do this but haven\'t been able to find it, basically what I need is that given this url for example:

http://localh         


        
17条回答
  •  醉梦人生
    2020-11-28 04:20

    A solution without Regex, a little bit easier on the eye, one I was looking for

    This supports ports, hash parameters etc.

    Uses browsers attribute element as a parser.

    function setUrlParameters(url, parameters) {
        var parser = document.createElement('a');
        parser.href = url;
    
        url = "";
    
        if (parser.protocol) {
            url += parser.protocol + "//";
        }
    
        if (parser.host) {
            url += parser.host;
        }
    
        if (parser.pathname) {
            url += parser.pathname;
        }
    
        var queryParts = {};
    
        if (parser.search) {
            var search = parser.search.substring(1);
    
            var searchParts = search.split("&");
            for (var i = 0; i < searchParts.length; i++) {
                var searchPart = searchParts[i];
    
                var whitespaceIndex = searchPart.indexOf("=");
    
                if (whitespaceIndex !== -1) {
                    var key = searchPart.substring(0, whitespaceIndex);
                    var value = searchPart.substring(whitespaceIndex + 1);
    
                    queryParts[key] = value;
                } else {
                    queryParts[searchPart] = false;
                }
            }
        }
    
        var parameterKeys = Object.keys(parameters);
    
        for (var i = 0; i < parameterKeys.length; i++) {
            var parameterKey = parameterKeys[i];
    
            queryParts[parameterKey] = parameters[parameterKey];
        }
    
    
        var queryPartKeys = Object.keys(queryParts);
    
        var query = "";
    
        for (var i = 0; i < queryPartKeys.length; i++) {
            if (query.length === 0) {
                query += "?";
            }
            if (query.length > 1) {
                query += "&";
            }
    
            var queryPartKey = queryPartKeys[i];
    
            query += queryPartKey;
    
            if (queryParts[queryPartKey]) {
                query += "=";
    
                query += queryParts[queryPartKey];
            }
        }
    
        url += query;
    
        if (parser.hash) {
            url += parser.hash;
        }
    
        return url;
    }
    

提交回复
热议问题