问题需求
项目上遇到获取url的参数值,如获取这个ie的值
https://www.baidu.com/s?ie=utf-8
代码
方法一:
function getQueryString (name) {
// 如果链接没有参数,或者链接中不存在我们要获取的参数,直接返回空
if (location.href.indexOf("?") == -1 || location.href.indexOf(name + '=') == -1) {
return '';
}
// 获取链接中参数部分
var queryString = location.href.substring(location.href.indexOf("?") + 1);
queryString = decodeURI(queryString);
// 分离参数对 ?key=value&key2=value2
var parameters = queryString.split("&");
var pos, paraName, paraValue;
for (var i = 0; i < parameters.length; i++) {
// 获取等号位置
pos = parameters[i].indexOf('=');
if (pos == -1) { continue; }
// 获取name 和 value
paraName = parameters[i].substring(0, pos);
paraValue = parameters[i].substring(pos + 1);
// 如果查询的name等于当前name,就返回当前值,同时,将链接中的+号还原成空格
if (paraName == name) {
return unescape(paraValue.replace(/\+/g, " "));
}
}
return '';
}
getQueryString (name)
方法二
function getUrlParam() {
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return theRequest;
}
var Request = new Object();
Request = getUrlParam();
console.log(Request)
var id=unescape(Request["name"]);
console.log(id)
方法三 正则表达式
function getUrlParam(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if(r!=null) return decodeURI(r[2]); return null; //返回参数值
}
var name =getUrlParam("name")
console.log(name)
参数值是中文
参数值是中文的时候浏览器会一个编码的过程,所以我们拿到的是经过了编码的值,解决办法就是用decodeURI()解码就可以了