获取地址栏的参数(依对象的形式返回)

<!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>

posted on 2019-04-29 11:39  A-pupli  阅读(143)  评论(0编辑  收藏  举报