Skip to content

Instantly share code, notes, and snippets.

@luccamendonca
Last active May 24, 2016 15:13
Show Gist options
  • Save luccamendonca/895a5ba776cfa76afec0bd889e2852cf to your computer and use it in GitHub Desktop.
Save luccamendonca/895a5ba776cfa76afec0bd889e2852cf to your computer and use it in GitHub Desktop.
Some simple functions to manipulate URL params using JavaScript
function goTo(href) {
if (!href) { return false; }
return window.location.href = href;
}
function getUrlParam (key) {
var paramsAssoc = getUrlParamsAssoc();
return (undefined == paramsAssoc[key]) ? null : paramsAssoc[key];
};
function addUrlParam (key, value) {
var paramsAssoc = getUrlParamsAssoc();
paramsAssoc[key] = value;
return buildUrlViaParams(paramsAssoc);
};
function removeUrlParam (key) {
var paramsAssoc = getUrlParamsAssoc();
if (undefined != paramsAssoc[key]) {
delete paramsAssoc[key];
}
return buildUrlViaParams(paramsAssoc);
};
function buildUrlViaParams (paramsAssoc, urlObject) {
urlObject = (!urlObject) ? window.location : urlObject;
var params = [];
for (var key in paramsAssoc) {
params.push(key+'='+paramsAssoc[key]);
}
params = (0 < params.length) ? '?'+params.join('&') : '';
return urlObject.origin + urlObject.pathname + params;
};
function getUrlParamsAssoc (urlObject) {
urlObject = (!urlObject) ? window.location : urlObject;
if (!urlObject.search) { return {}; }
var params = urlObject.search.replace('?', '').split('&');
var paramsAssoc = {};
var split = [];
for (var i = params.length - 1; i >= 0; i--) {
split = params[i].split('=');
paramsAssoc[split[0]] = split[1];
}
return paramsAssoc;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment