js获取url链接中的参数:
url传递参数这是常识,这里就不多介绍了,既然传递参数就要获取参数的值,下面就介绍一下如何实现此功能。
代码如下:
function request(paras){ var url="softwhy.com?a=1&b=2"; var paraString=url.substring(url.indexOf("?")+1,url.length).split("&"); var paraObj={} for(var i=0;i<paraString.length;i++){ var j=paraString[i]; paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length); } var returnValue=paraObj[paras.toLowerCase()]; if(typeof(returnValue)=="undefined"){ return ""; } else{ return returnValue; } } console.log(request(‘a‘)); console.log(request(‘b‘));
以上代码实现了我们想要的功能,能够输出指定的url中参数的值,下面简单介绍一下实现过程。
一.实现原理:
原理其实非常的简单,一句话就是在正确的位置截取字符串,首先截取?以后的字符串,然后再使用&分割这个字符串生成数组,然后再通过截取字符串的方式,将参数名称和参数值作为键值对存入对象直接量,原理大致如此。
二.代码注释:
1.function request(param){},获取参数值得函数,参数为url中的传递的参数名称。
2.var url="softwhy.com?a=1&b=2",将要获取参数的url链接地址。
3.var paraString=url.substring(url.indexOf("?")+1,url.length).split("&"),url.substring(url.indexOf("?")+1,url.length)先用这个截取?以后的字符,然后再使用split()函数分割字符串生成一个函数。
4.var paraObj={},声明一个对象直接量。
5.for(var i=0;i<paraString.length;i++){},遍历数组中的每一个元素。
6.var j=paraString,将数组中的元素赋值给j。
7.paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length),j.substring(0,j.indexOf("=")).toLowerCase()获取的是url参数的名称,j.substring(j.indexOf("=")+1,j.length)获取参数值,这样就是将参数名作为属性名,参数值作为属性值。
8.var returnValue=paraObj[param.toLowerCase()],指定属性名称的属性值赋值给变量returnValue。
9.if(typeof(returnValue)=="undefined"){return ""},如果returnValue值为undefined,也就是说不存在,就返回空字符。
10.否则返回returnValue。
三.相关阅读:
1.substring()函数可以参阅javascript的String对象的substring()方法一章节。
2.indexOf()函数可以参阅javascript的String对象的indexOf()方法一章节。
3.split()函数可以参阅javascript的String对象的split()方法一章节。
4.toLowerCase()函数可以参阅javascript的String对象的toLowerCase()方法一章节。
原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=9555
更多内容可以参阅:http://www.softwhy.com/javascript/