需求:js获取地址栏中传入的参数。
例如,浏览器地址栏中在’search’后面的值,将其转化为对象或直接取值。
http://localhost:3000/mobile/searchList.html?key=衣服
方法一:用字符串方法,循环数组取值
字符串方法:
- 切割字符串 str.slice(n)
传入不同个数的值操作不一样,详见:slice方法 - 分割字符串为数组 str.split(" ");
按照参数将字符串分割为多个字符串组成的数组,详见:split方法
代码实现:
function getData(search){ //传入关键字如search
//保存地址栏’search’后的字符串,并去掉第一个“?”符
var search = window.loction.search.slice(1);
//用“&”切分开为数组,每个成员格式为“key=value”
var data = search.split(‘&’);
//新建对象保存数据
var obj={};
//循环取出数组中的值来保存,将key与value分开并保存
for(var i =0, i<data.length; i++){
var kv = data[i].split(‘=’);
obj[kv[0]]=kv[1];
}
return obj; //obj为最终参数构成的对象(JSON格式)
}
用正则表达式取值
直接取出来“search”后面name对应的值。
推荐用这个,比较简洁。
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
详细出处:js获取地址栏中传递的参数
2018.1.31
1月更新好少,赶紧凑一篇。