js-URL参数的获取

作者: 墨_梵 | 来源:发表于2018-11-05 13:57 被阅读2次

1、获取单个参数:

function getParam(name, url) {
    if(typeof name !== 'string') return false;
    if (!url) url = window.location.href;
    // 当遇到name[xx]时,对方括号做一下转义为 name\[xxx\],因为下面还需要使用name做正则
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');
    var results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

getParam('query','https://juejin.im/search?query=hello&time=2017-11-12')

//输出:hello

2、获取多个参数:

function getParams(names, url) {
    if(typeof name !== 'string') return false;
    var names = names.split(' ');
    var result = {};
    var i = 0,
        len = names.length;
    if (names.length === 0) return false;
    for (; i < len; i++) {
        result[names[i]] = getParam(names[i], url);
    }
    return result;
}
getParams('query time','https://juejin.im/search?query=hello&time=2017-11-12')

//输出:{query: "hello", time: "2017-11-12"}

3、设置单个参数:

function setParam(name, val, url) {
    if(typeof name !== 'string') return false;
    if (!url) url = window.location.href;
    var _name = name.replace(/[\[\]]/g, '\\$&');
    var value = name + '=' + encodeURIComponent(val);
    var regex = new RegExp(_name + '=[^&]*');
    var urlArr = url.split('#');
    var result = '';

    if(regex.exec(url)){
        result =  url.replace(regex, value);
    }else{
        result = urlArr[0]+'&'+value+ (urlArr[1] || '');
    }

    return result
}
setParam('query','world','https://juejin.im/search?query=hello&time=2017-11-12')

// output: 
// "https://juejin.im/search?query=world&time=2017-11-12"

4、设置多个参数:

function setParams(obj, url) {
    var result = url || '';
    if (Object.prototype.toString.call(obj) !== '[object Object]') return false;
    for (var name in obj) {
        result = setParam(name, obj[name], result);
    }
    return result;
}
setParams({a:111,b:222,query:'world'},'https://juejin.im/search?query=hello&time=2017-11-12')

// output: 
// "https://juejin.im/search?query=world&time=2017-11-12&a=111&b=222"

相关文章

  • js-URL参数的获取

    1、获取单个参数: 2、获取多个参数: 3、设置单个参数: 4、设置多个参数:

  • Lua参数获取方法

    POST参数获取 JSON参数获取 GET参数获取

  • 获取url的参数

    获取URL中的参数名及参数值的集合 通过参数名获取url中的参数值 通过正则获取到参数值;

  • js获取浏览器参数

    获取url参数对象(?号后的参数) 根据名称,获取参数值

  • shell脚本命令

    $1:获取第一个参数。$2:获取第二个参数。 $#:获取参数的长度。 $@:获取所有的参数。 -d:检查是否存在,...

  • Gin-获取POST请求参数

    有默认值方式获取POST请求参数 无默认值方式获取POST请求参数 获取POST请求参数的同时,返回参数获取状态,...

  • Gin-获取GET请求参数

    有默认值方式获取GET请求参数 无默认值方式获取GET请求参数 获取GET请求参数的同时,返回参数获取状态,状态为...

  • 6.2KOA 数据请求 Request

    数据请求 Request 获取 Request 对象 获取 url 参数 获取 Get 请求参数 获取 POST ...

  • egg使用总结

    获取参数获取get的参数:ctx.query获取post的参数:ctx.request.body 启动和停止指定进...

  • 原生获取地址栏参数

    方法一:采用正则 1:获取问号?后边的参数 标签(关键词): 获取问号后边的参数 获取井号号后边的参数 这里获取...

网友评论

    本文标题:js-URL参数的获取

    本文链接:https://www.haomeiwen.com/subject/lklsxqtx.html