概述
最近做的项目中涉及到获取href
中携带的参数,不想通过提取字符串的方式来一个一个的获取参数,故自己写了一个方法来获取参数,一以便以后开发中重复使用;
实现
思路
- 通过
window.location.search
获取到参数部分,并定义一个空对象obj
用于放各参数及其值; - 提取
?
字符之后的参数部分,并根据&
分割字符串; - 遍历2中得到的字符数组,再将数组的每一个元素都以
=
分割,然后将得到的数组的第一个元素作为对象的键,第二个元素作为值,最终得到一组键值对; - 返回对象(obj)
代码
function getParams() {
// 获取参数部分
var params = window.location.search;
// 提取除?外的剩余部分
var searchs = params.substring(params.indexOf('?') + 1);
// 字符串转换为字符数组
var arr = searchs.split('&');
var obj = {};
// 遍历字符串数组
for (var i = 0; i < arr.length; i++) {
// 分割字符串
var item = arr[i].split('=');
// 组装键值对
obj[item[0]] = item[1];
}
return obj;
}
例子
例如: window.location.href = '127.0.0.1:8080/page/index?id=0&no=1&sub=3'
调用上述的方法: window.location.search = '?id=0&no=1&sub=3'
最终结果是:
{
id:"0",
no: "1",
sub: "3"
}