修改前: 复制代码 代码如下: <BR>var url="www.taobao.com?key0=a&key1=b&key2=c"; <BR>function parseQueryString(url){ <BR>var str=url.split("?")[1], <BR>items=str.split("&"); <BR>var arr,name,value; <BR>for(var i = 0, l = items.length; i < l; i++){ <BR>arr=items[i].split("="); <BR>name= arr[0]; <BR>value= arr[1]; <BR>this[name]=value; <BR>} <BR>} <BR>var obj=new parseQueryString(url); <BR>alert(obj.key1) <BR> 修改后: 复制代码 代码如下: <BR>var url="www.taobao.com?key0=a&key1=b&key2=c"; <BR>var pQString={ <BR>createNew:function(url){ <BR>var str=url.split("?")[1], <BR>items=str.split("&"); <BR>var arr,name,value; <BR>for(var i = 0, l = items.length; i < l; i++){ <BR>arr=items[i].split("="); <BR>name= arr[0]; <BR>value= arr[1]; <BR>this[name]=value; <BR>} <BR>} <BR>} <BR>var obj=new pQString.createNew(url); <BR>alert(obj.key1) <BR> 感谢 草根程序猿很厉害把这个方法重写了一下,更严密,高效了,最后面在些再学习一下!!! 复制代码 代码如下: <BR>function getQueryString(url) { <BR>if(url) { <BR>url=url.substr(url.indexOf("?")+1); //字符串截取,比我之前的split()方法效率高 <BR>} <BR>var result = {}, //创建一个对象,用于存name,和value <BR>queryString =url || location.search.substring(1), //location.search设置或返回从问号 (?) 开始的 URL(查询部分)。 <BR>re = /([^&=]+)=([^&]*)/g, //正则,具体不会用 <BR>m; <BR>while (m = re.exec(queryString)) { //exec()正则表达式的匹配,具体不会用 <BR>result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]); //使用 decodeURIComponent() 对编码后的 URI 进行解码 <BR>} <BR>return result; <BR>} <BR>// demo <BR>var myParam = getQueryString("www.taobao.com?key0=a&key1=b&key2=c"); <BR>alert(myParam.key1); <BR> 注: 1、substr()与substring(start,stop) ,提取字符串中介于两个指定下标之间的字符。 重要事项:与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数。 参见http://www.jb51.net/w3school/js/jsref_substring.htm 2、location.search.substring(1) ,location.search设置或返回从问号 (?) 开始的 URL(查询部分)。 参见http://www.jb51.net/w3school/htmldom/prop_loc_search.htm 3、exec() 方法用于检索字符串中的正则表达式的匹配。太强大了,还不会用 参考http://www.jb51.net/w3school/js/jsref_exec_regexp.htm 4、使用 decodeURIComponent() 对编码后的 URI 进行解码。 参见http://www.jb51.net/w3school/js/jsref_exec_regexp.htm