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> 

 

posted @ 2015-08-02 16:19  流殇微  阅读(8876)  评论(1编辑  收藏  举报