JS解析url
使用js解析url ,返回一个对象,使用函数:
<script type="text/javascript"> var url="www.taobao.com?key0=a&key1=b&key2=c"; function parseQueryString(url){ var str=url.split("?")[1], items=str.split("&"); var arr,name,value; for(var i = 0, l = items.length; i < l; i++){ arr=items[i].split("="); name= arr[0]; value= arr[1]; this[name]=value; } } var obj=new parseQueryString(url); alert(obj.key1) </script>
改成函数直接量:
<script type="text/javascript"> var url="www.taobao.com?key0=a&key1=b&key2=c"; var pQString={ createNew:function(url){ var str=url.split("?")[1], items=str.split("&"); var arr,name,value; for(var i = 0, l = items.length; i < l; i++){ arr=items[i].split("="); name= arr[0]; value= arr[1]; this[name]=value; } } } var obj=new pQString.createNew(url); alert(obj.key1) </script>
改成更高效的形式:
<script type="text/javascript">
function getQueryString(url) {
if(url) {
url=url.substr(url.indexOf("?")+1); //字符串截取,比我之前的split()方法效率高
}
var result = {}, //创建一个对象,用于存name,和value
queryString =url || location.search.substring(1), //location.search设置或返回从问号 (?) 开始的 URL(查询部分)。
re = /([^&=]+)=([^&]*)/g, //正则,具体不会用
m;
while (m = re.exec(queryString)) { //exec()正则表达式的匹配,具体不会用
result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]); //使用 decodeURIComponent() 对编码后的 URI 进行解码
}
return result;
}
// demo
var myParam = getQueryString("www.taobao.com?key0=a&key1=b&key2=c");
alert(myParam.key1);
</script>