利用a标签的href属性拿到请求路径中的请求参数和哈希值
<script> function queryUrl(str){//封装一个方法 let link = document.createElement('a')//创建一个a标签,这里我们不需要添加到页面上。 link.href=str//给a标签的href属性赋值。我们要截取的那个路径 let obj={} let search = link.search.substr(1)//利用a标签的serach属性拿到?号后面的请求参数,并且用substr截取,只要?号后面的参数 let hash = link.hash.substr(1)//利用a标签的hash属性拿到#号后面的请求参数,并且用substr截取,只要#号后面的参数 hash?obj.hash=hash:''//判断有没有这个hash值,有就放在obj里,没有就啥也不干 if(search){//判断有没有search search = search.split('&')//先用&截取一下,他就会变成一个数组:["name=xiaopi", "age=20", "sex=%E5%A5%B3"] for(let i=0;i<search.length;i++){//然后遍历这个数组,分别截取它每一项里面的“=”号: console.log(search[i])//name=xiaopi、age=20、sex=%E5%A5%B3 let item = search[i].split('=')//截取“=”号,结果是: console.log(item)//["name", "xiaopi"]、["age", "20"]、 ["sex", "%E5%A5%B3"] obj[item[0]]=item[1] //然后给obj赋值。就是截取后的每一项的下标为0的是对象的属性,下标为1的为下标为0的属性的值 } } return obj//最后把obj返回就行了。 } let url = "http://www.baidu.com/type?name=xiaopi&age=20&sex=女#程序员" console.log(queryUrl(url)) </script>