前端 - js编程题2 - 获取 url 中的参数

题目:

获取 url 中的参数
1. 指定参数名称,返回该参数的值 或者 空字符串
2. 不指定参数名称,返回全部的参数对象 或者 {}
3. 如果存在多个同名参数,则返回数组

知识点:

URL:统一资源定位符(URL,英语Uniform Resource Locator的缩写)也被称为网页地址,是因特网上标准的资源的地址。

           Location 对象包含有关当前 URL 的信息。

           Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。

hash    设置或返回从井号 (#) 开始的 URL(锚)。
host    设置或返回主机名和当前 URL 的端口号。
hostname    设置或返回当前 URL 的主机名。
href    设置或返回完整的 URL。
pathname    设置或返回当前 URL 的路径部分。
port    设置或返回当前 URL 的端口号。
protocol    设置或返回当前 URL 的协议。
search    设置或返回从问号 (?) 开始的 URL(查询部分)。

 

function getUrlParam(sUrl, sKey) { 
    var result = {};
    if(sUrl.indexOf('?')<0){// indexOf()的用法:返回字符中indexof(string)中字串string在父串中首次出现的位置,从0开始!没有返回-1;
        return result;//没有参数,返回{}
    }
    
    url = sUrl.split('?');//"2:3:4:5".split(":")    //将返回["2", "3", "4", "5"]
    url = url[1].split('#');
    url = url[0].split('&');
    
    url = url.slice(0);//slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
                        //使用 start(包含) 和 end(不包含) 参数来指定字符串提取的部分。
    for(var idx in url){
        var current = url[idx].split('=');
        var key = current[0];
        if(result[key]){
            result[key]=[].concat(result[key],current[1]);
            
        }else{
            result[key]=current[1];
        }
        
        //console.log(result[key]);
    }
     // url : http://www.baidu.com?key=1&key=2&key=3&test=4&tt=5&test=2 
     // 这时候 result 形如:{"key":["1","2","3"],"test":["4","2"],"tt":["5"]}
    if(sKey){
        return result[sKey] || '';
    }else{
        return result;
    }    
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值