zoukankan      html  css  js  c++  java
  • javascript获取和设置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);
        }
    }
    
  • 相关阅读:
    4g项目shell脚本
    shell脚本执行方法
    linux 4g项目定时启动脚本
    java面试-mysql优化
    java面试-java8特性
    java面试-oom内存溢出有几种类型
    java面试-动态代理
    java面试-ThreadLocal
    java面试-类加载过程
    java面试-JVM内存模型
  • 原文地址:https://www.cnblogs.com/sntetwt/p/3337451.html
Copyright © 2011-2022 走看看