Appearance
项目需求:
教师端,题库列表界面需要传入 n
个参数,后续还有可能新增参数。由于是旧项目后端在 url
路由设置参数,后续开发也不方便。因此,由前端自定义传参接收参数。
使用一般方式获取浏览器路有参数,比如:
var search = window.location.search;
if(search.indexOf('?') != -1) {
var val = search.split('?')[1];
val = val.split('&').slice(-1)[0];
val = val.split('=')[1];
}
var search = window.location.search;
if(search.indexOf('?') != -1) {
var val = search.split('?')[1];
val = val.split('&').slice(-1)[0];
val = val.split('=')[1];
}
上述方式单独获取具体参数可以使用,如果获取多个参数就得考虑使用正则或者封装公共方法。
如何获取多个浏览器 url
参数?
下面是自己编写的方法,把浏览器参数存入对象中,以键值对的方式存在对象中。
步骤:
获取浏览器参数,使用
window.location.search
。使用
split
切割参数取下标为 1 的数据。声明一个全局对象,保存参数数据。
使用
split
切割&
符号。循环遍历上一步骤的数组,使用
split
切割数组每项中的数据,以=
为切割点。设置每项的数据下标
0
为对象的键名,1
为对象的键值。循环结束后,返回该对象。
完整代码:
function getUrlParams(url) {
let obj ={}
if(url.indexOf('?') != -1) {
url = url.split('?')[1]
url = url.split('&')
for(let i=0; i<url.length; i++) {
let v = url[i].split('=')
obj[v[0]] = v[1]
}
}
return obj;
}
function getUrlParams(url) {
let obj ={}
if(url.indexOf('?') != -1) {
url = url.split('?')[1]
url = url.split('&')
for(let i=0; i<url.length; i++) {
let v = url[i].split('=')
obj[v[0]] = v[1]
}
}
return obj;
}