码迷,mamicode.com
首页 > Web开发 > 详细

JS获取地址参数

时间:2016-06-27 15:34:24      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

今天碰到获取地址参数的问题,所以总结了一下。

第一种情况:获取地址栏参数

function getUrlParam(name){
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
    var r = window.location.search.substr(1).match(reg);  //匹配目标参数
    if (r!=null) return unescape(r[2]); return null; //返回参数值
} 

调用的时候直接getUrlParam(参数名)就可以。挺好用,网上基本都是这个方法。

不过这个方法只能获取地址栏的参数,因为window.location.search是一个私有方法:

输入:http://www.js-51.com/news/2012-5/GUANLIRUANJIANYAOBUYAOBAYIYONGXINGFANGZAIZHONGYAOWEIZHI.html?q=all&l=zh-cn#go

1 href
全部URl字符串(在浏览器中就是完整的地址栏)
返回: http://www.js-51.com/news/2012-5/GUANLIRUANJIANYAOBUYAOBAYIYONGXINGFANGZAIZHONGYAOWEIZHI.html?q=all&l=zh-cn#go

2 protocol
URL 的协议部分
返回:http:

3 host
URL 的主机部分
返回:www.js-51.com

4 port
URL 的端口部分
假如采用默认的80端口(即使添加了:80),那么返回值并不是默认的80而是空字符
返回:""

5 pathname
URL 的路径部分(就是文件地址)
返回:/news/2012-5/GUANLIRUANJIANYAOBUYAOBAYIYONGXINGFANGZAIZHONGYAOWEIZHI.html?q=all&l=zh-cn#go

6 search
查询(参数)部分
返回:?q=all&l=zh-cn

7 hash
锚点
返回:#go 

 

(详细可以查看JS解析url,写的还是比较详细的)

第二种情况:获取地址参数

我碰到这个情况是 获取一个列表元素中的地址,并在模态框中iframe打开这个地址。这时window.location.search就不能用了,所以我略作了修改

function getParam(place,name){
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");  //构造一个含有目标参数的正则表达式对象
    var r = place.substr(place.indexOf("?")+1).match(reg);  //匹配目标参数
    if (r!=null) return unescape(r[2]); return null; //返回参数值
} 

这样就可以获取任意位置的类似地址栏的参数,使用的时候就getParam(place,name)。

place就是想要获取的地址,eg:

var val = $(this).find("a").attr("value");
var id = getParam(val,"id");
console.log(id)

如果想要获取地址栏的参数,place参数可以写window.location.href或者window.location.search就是上面列出的几个。

 

以上就是这次的总结,欢迎大家交流、使用,有更好的方法欢迎讨论~

JS获取地址参数

标签:

原文地址:http://www.cnblogs.com/Nightsky-Dec/p/5620019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!