JSFiddle - React, Tailwind, and code Playground

Query String Parameters. Adding a "params" object onto the built-in location object.

by MoonScript

HTML

<form id="add-param">
    <input type="text" id="param-name"/>
    <input type="submit" value="Add Parameter"/>
</form>
<ol id="params"></ol>

JavaScript

var data = {};
data.navigator = navigator;
data.location = location;
data.location.params = {};
if (location.search) {
    var params = location.search.substr(1).split('&');
    var totalParams = params.length;
    for (var z=0;z<totalParams;z++) {
        (function(paramPair){
            var nv = paramPair.split('=');
            var paramName = decodeURIComponent(nv[0]);
            var paramValue = decodeURIComponent(nv[1]);
            var existingValue = data.location.params[paramName];
            if (existingValue === undefined) {
                data.location.params[paramName] = paramValue;
            } else if (existingValue.constructor === Array) {
                data.location.params[paramName].push(paramValue);
            } else {
                // Turn multiple of the same name into an array
                data.location.params[paramName] = [existingValue, paramValue];
            }
        })(params[z]);
    }
}

$('#add-param').submit(function(){
    var paramName = $('#param-name').val();
    if (paramName) {
        var paramVal = data.location.params[paramName];
        if (paramVal !== undefined && paramVal.constructor === Array) {
            paramVal = '[' + paramVal.join(',') + ']';
        }
        var paramText = '<li>' + paramName + ': ' + paramVal + '</li>';
        $('#params').append(paramText);
    }
    return false;
});