解析链接中的参数

分析

  • ?参数:?aaa=true&bbb=false
  • hash参数:#aaa=true&bbb=false

解析?参数方法

  • 利用正则表达式

    1
    2
    3
    4
    5
    6
    7
    8
    function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = decodeURI(window.location.search).substr(1).match(reg);
    if (r !== null) return unescape(r[2]);
    return null;
    }

    getQueryString('id');
  • 利用字符串和数组方法(此方法和解析#参数一致,使用window.location.search)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function getURLParam(strParamName){
    var strReturn='';
    var query = this.location.search.substring(1); //获取URL中?后面的部分
    if (query.length > 0){
    var params = query.split("&"); // 以&符号将参数字符串拆分成数组
    for (var i = 0 ; i < params.length ; i++){
    var pos = params[i].indexOf("=");
    var name = params[i].substring(0, pos); // 每个参数对的名称
    var value = params[i].substring(pos + 1); // 每个参数对的值
    if (name == strParamName) { // 找出需要的参数对的值
    strReturn = value;
    }
    }
    }
    return strReturn;
    }

    getURLParam('id');
    // 原理:利用location.search找到?后面的部分,利用&及split组合拆分成数组,利用=及substring解析出每个数组中的名称和值

解析hash参数方法

  • 利用字符串和数组方法(此方法和解析?参数一致,使用window.location.hash)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function getURLHashParam(strParamName){
    var strReturn='';
    var query = this.location.hash.substring(1); //获取URL中#后面的部分
    if (query.length > 0){
    var params = query.split("&"); // 以&符号将参数字符串拆分成数组
    for (var i = 0 ; i < params.length ; i++){
    var pos = params[i].indexOf("=");
    var name = params[i].substring(0, pos); // 每个参数对的名称
    var value = params[i].substring(pos + 1); // 每个参数对的值
    if (name == strParamName) { // 找出需要的参数对的值
    strReturn = value;
    }
    }
    }
    return strReturn;
    }

    getURLHashParam('id');
    // 原理:利用location.hash找到#后面的部分,利用&及split组合拆分成数组,利用=及substring解析出每个数组中的名称和值