<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>获取地址栏中的参数并作为对象返回</title>
</head>
<body>
<div id="app">
<p v-for="(item,key) in obj">
{{ key }} {{ item }}
</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
name:[], //用于存入对象的键
value:[], //用于存入对象的值
obj:{} //定义一个空的对象
},
methods:{
getUrl(){
var str = location.href; //获取整个地址栏中的值
var num = str.indexOf("?"); //判断地址栏中是否有?这个值
str = str.substr(num + 1); //返回?之后的所有参数 "返回的是字符串"
var arr = str.split("&"); //在字符串中依 & 作为分隔符进行分割并返回一个数组
//循环数组
for(var i = 0;i<arr.length;i++){
var strArr = arr[i].indexOf("=") //循环出来的数组进行判断是否有= 返回长度
if(strArr > 0){
//把循环出来的数值使用concat()添加到数组中否则会覆盖
this.name = this.name.concat(arr[i].substring(0,strArr))
this.value = this.value.concat(arr[i].substr(strArr + 1))
}
}
for(var i=0;i<this.name.length;i++){
var keys = this.name[i]
var val = this.value[i]
this.obj[keys] = val
}
}
},
created(){
this.getUrl()
}
})
</script>
</body>
</html>