获取和设置URL中的参数

勘误版

function getQuery(key, url) {
    url = url || window.location.href;
    if (url.indexOf('#') !== -1)
        url = url.substring(0, url.indexOf('#'));
    var rts = [], rt;
    var queryReg = new RegExp('(^|\\?|&)'   key   '=([^&]*)(?=&|$|#)', 'g');
    while ((rt = queryReg.exec(url)) != null) {
        rts.push(decodeURIComponent(rt[2]));
    }
    if (rts.length == 0) return null;
    if (rts.length == 1) return rts[0];
    return rts;
}


function setQuery(key, value, url) {

    url = url || window.location.href;
    var hash = '';

    if (url.indexOf('#') !== -1)
        hash = url.substring(url.indexOf('#'));

    url = url.replace(hash, '');
    url = url.replace(new RegExp('(^|\\?|&)'   key   '=[^&]*(?=&|#|$)', 'g'), '');
    value = isArray(value) ? value : [value];

    for (var i = value.length - 1; i >= 0; i--) {
        value[i] = encodeURIComponent(value[i]);
    }

    var p = key   '='   value.join('&'   key   '=');
    return url   (/\?/.test(url) ? '&' : '?')   p   hash;
}

 增强版,支持同名参数

function getQuery(key, url) {
    url = url || window.location.href;
    var rts = [], rt;
    var queryReg = new RegExp('(^|\\?|&)'   key   '=([^&]*)(?=&|$|#)', 'g');
    while ((rt = queryReg.exec(url)) != null) {
        rts.push(decodeURIComponent(rt[2]));
    }
    if (rts.length == 0) return null;
    if (rts.length == 1) return rts[0];
    return rts;
}


function setQuery(key, value, url) {

    url = url || window.location.href;
    url = url.replace(new RegExp('(^|\\?|&)'   key   '=[^&]*(?=&|$|#)', 'g'), '');
    value = value.splice ? value : [value];

    for (var i = value.length - 1; i >= 0; i--) {
        value[i] = encodeURIComponent(value[i]);
    }

    var p = key   '='   value.join('&'   key   '=');
    return url   (/\?/.test(url) ? '&' : '?')   p;
}

 利用正则表达式

function getQuery(key, url) {
    var reg = new RegExp('^\\S*(\\?|&)'   key   '=([^&]*)\\S*$');
    var l = url || window.location.href;
    if (reg.test(l)) {
        return decodeURIComponent(l.replace(reg, '$2'));
    } else {
        return null;
    }
}

function setQuery(key, value, url) {
    var reg = new RegExp(key   '=[^&]*(?=&|$)');
    var l = url || window.location.href;
    if (reg.test(l)) {
        return l.replace(reg, key   '='   encodeURIComponent(value));
    } else {
        return l   (/\?/.test(l) ? '&' : '?')   key   '='   encodeURIComponent(value);
    }
}

 


更多专业前端知识,请上 【猿2048】www.mk2048.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值