JavaScript Add/Update Query String
Function and test suite for adding or updating a query string parameter. https://stackoverflow.com/a/23529943/8385841
by Timar
HTML
<div id='output'></div>
CSS
body {
font-family: monospace;
font-size:12px;
background:black;
color:white
}
JavaScript
/**
* JavaScript Query string replacement function and test suite.
*
* The function is designed to add or update a query string parameter in a given
* URL. If all of the tests pass, the function should be pretty good.
*/
var test_val = 'new',
test_uris = [
[ 'http://example.com/', 'http://example.com/?param=' + test_val ],
[ 'http://example.com/', 'http://example.com/?param=' + test_val ],
[ 'http://example.com/page', 'http://example.com/page/?param=' + test_val ],
[ 'http://example.com/login.html?scope=company', 'http://example.com/login.html?scope=company¶m=' + test_val ],
[ 'http://example.com/?', 'http://example.com/?param=' + test_val ],
[ 'http://example.com/?param', 'http://example.com/?param=' + test_val ],
[ 'http://example.com/?param=val', 'http://example.com/?param=' + test_val ],
[ 'http://example.com/?param=val&', 'http://example.com/?param=' + test_val + '&'],
[ 'http://example.com/?param=val¶m2', 'http://example.com/?param=' + test_val + '¶m2' ],
[ 'http://example.com/?param=¶m2', 'http://example.com/?param=' + test_val + '¶m2' ],
[ 'http://example.com/?param=&param2', 'http://example.com/?param=' + test_val + '¶m2' ],
[ 'http://example.com/?param=val¶m2=val', 'http://example.com/?param=' + test_val + '¶m2=val' ],
[ 'http://example.com/?param2=val¶m[]=val', 'http://example.com/?param2=val¶m[]=' + test_val ],
[ 'http://example.com/?param[test]=val¶m2=val', 'http://example.com/?param[test]=' + test_val + '¶m2=val' ],
[ 'http://example.com/?param[test]=val¶m2[]=val', 'http://example.com/?param[test]=' + test_val + '¶m2[]=val' ],
[ 'http://example.com/?param[]=val¶m[]=another¶m2=val', 'http://example.com/?param[]=' + test_val + '¶m[]=' + test_val + '¶m2=val' ],
[ 'http://example.com/?param=val#', 'http://example.com/?param=' + test_val + '#' ],
[ 'http://example.com/?param=val¶m2=val#param=val',...