對原生html之間get傳遞引數 和獲取引數的封裝
阿新 • • 發佈:2019-02-08
UrlParam .param(‘引數’) 如果頁面間傳遞的key無重複 獲取單個值
UrlParam .paramValues(‘引數’)如果頁面間傳遞的key有重複 得到一個數組
UrlParam .hasParam(‘引數’)判斷引數是否存在
UrlParam .paramMap()得到所有引數的物件
封裝好的程式碼
UrlParam = function() { // url引數
var data, index;
(function init() {
data = []; //值,如[["1","2"],["zhangsan"],["lisi"]]
index = {}; //鍵:索引,如{a:0,b:1,c:2}
var u = window.location.search.substr(1);
if (u != '') {
var params = decodeURIComponent(u).split('&');
for (var i = 0, len = params.length; i < len; i++) {
if (params[i] != '') {
var p = params[i].split("=");
if (p.length == 1 || (p.length == 2 && p[1] == '')) {// p | p= | =
data.push(['']);
index[p[0]] = data.length - 1;
} else if (typeof(p[0]) == 'undefined' || p[0] == '') { // =c 捨棄
continue;
} else if (typeof(index[p[0]]) == 'undefined') { // c=aaa
data.push([p[1]]);
index[p[0 ]] = data.length - 1;
} else {// c=aaa
data[index[p[0]]].push(p[1]);
}
}
}
}
})();
return {
// 獲得引數,類似request.getParameter()
param : function(o) { // o: 引數名或者引數次序
try {
return (typeof(o) == 'number' ? data[o][0] : data[index[o]][0]);
} catch (e) {
}
},
//獲得引數組, 類似request.getParameterValues()
paramValues : function(o) { // o: 引數名或者引數次序
try {
return (typeof(o) == 'number' ? data[o] : data[index[o]]);
} catch (e) {}
},
//是否含有paramName引數
hasParam : function(paramName) {
return typeof(paramName) == 'string' ? typeof(index[paramName]) != 'undefined' : false;
},
// 獲得引數Map ,類似request.getParameterMap()
paramMap : function() {
var map = {};
try {
for (var p in index) { map[p] = data[index[p]]; }
} catch (e) {}
return map;
}
}
}();