获取url中某参数的值


好久没有更新博客了,最近迷上了手账,一个很少女心的东西,总觉得想要学习的东西有很多,一起加油吧~

今天来总结一下获取url中参数的值,比如 http://blog.csdn.net/amberwu?viewmode=contents 这个链接后面跟一个参数 viewmode ,其对应的值是contents 。


/**
 * 获取URL查询字符串query中参数的值
 * @param  {[String]} key [要查询的参数名]
 * @param  {[String]} href [url或者url查询字符串(推荐)]
 * @return {[String]}     [参数值]
 */
 var getQueryValue = function(key, href) {
  href = href || window.location.search;
  var match = href.match(new RegExp('[?&]' + key + '=([^&]*)'));
  return match && match[1] && decodeURIComponent(match[1]) || '';
};


那么接下来获取参数就可以这样写:

// 获取参数viewmode var viewmode= getQueryValue('viewmode');


得到的结果如图:



But
如果我们这个链接是某个参数有多个值,比如: http://blog.csdn.net/amberwu?viewmode=contents&viewmode=content2  这个链接后面跟一个参数 viewmode ,但其对应的值有俩,是contents 和content1 

这样如果我们继续再用上面的 getQueryValue

则会出现这样的问题:


所以我们重新写一个函数:


/**
 * 获取URL查询字符串query中参数的值
 * @param  {[String]} key [要查询的参数名]
 * @param  {[String]} href [url或者url查询字符串(推荐)]
 * @return {[String]} 匹配不到undefine,匹配到一个String,匹配到多个Array
 */
var getQueryValue2 = function(key, href) {
  var reg = new RegExp('[?&]' + key + '=([^&]*)', 'g');
  var match = (href || window.location.search).match(reg);
  if (!match) return;
  if (match.length === 1) return decodeURIComponent(match[0].replace(reg, '$1'));
  match = match.map(function(item) {
    return decodeURIComponent(item.replace(reg, '$1'));
  });
  return match;
};

// 获取参数 viewmode
var viewmode = getQueryValue2('viewmode');



这样得到的结果变成了数组而不是字符串,可以根据需要去转换类型。


好了~欢迎补充和改正。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值