小编才疏学浅,若文章、答案有错误之处,欢迎邮件通知小编及时修改,同时也可以面试题投稿。最后祝大家共同进步!
有一个url 'http://www.youdao.com/newcard.html?sid=50&a=5&add=9&type=all',请写一个获取url中'?'后制定参数值的函数
答案:
/**
* 获取某一个name值的参数
* @param {string} name 想要获取的参数名
* @param {string} str 可选参数,传入类似*=*&*=*格式的str,默认是location.search
* @return {string} 返回查询的结果
*/
function getUrlValue(name, str) {
if (!name) {
return "";
}
var reg = new RegExp("(^|[?&])" + name + "=([^&]*)(&|$)");
var url = str || window.location.search;
var match = url.match(/??[^#]*/);
if (!match || match[0].length === 1) {
return tmp;
}
var result = match[0].match(reg);
if (result != null) {
return decodeURIComponent(result[2]);
} else {
return "";
}
}
/**
* 格式化url参数(也可以传入固定字符串)
* @param {string} str 可选参数,传入类似*=*&*=*格式的str,默认是location.search
* @return {json} 返回格式化之后的key,value对象
*/
function getUrl(str) {
var tmp = {};
var url = str || window.location.search;
// 保存?和#之间的部分内容
var match = url.match(/??[^#]*/);
if (!match || match[0].length === 1) {
return tmp;
}
var reg = /([^?&]*)=([^&]*)/g;
// 保存符合键值对格式的结果数组
var paramArr = match[0].match(reg);
for (var i = 0; i < paramArr.length; i++) {
var arr = paramArr[i].match(/([^?&]*)=([^&]*)/),
key = arr[1],
value = decodeURIComponent(arr[2] || "");
tmp[key] = value;
}
return tmp;
}