解析链接中的参数

73 阅读1分钟

Date: 2017-04-03

分析

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

解析?参数方法

  • 利用正则表达式
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)
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)
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解析出每个数组中的名称和值