我有三个函数来处理url参数,但它不够好,我的意思是它有点复杂,而我正在寻找简单的函数来使用所有这三个。获取多个url参数
function getUrlParameter(sParam) { // this function to get single parameter
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam) {
return sParameterName[1];
}
}
}
function replaceUrlParam(paramName, paramValue) { // this to replace parameters value by other value
var currentUrl = window.location.href;
var pattern = new RegExp('(' + paramName + '=).*?(&|$)')
var newUrl = currentUrl.replace(pattern, '$1' + paramValue + '$2');
if (newUrl == currentUrl && newUrl.indexOf(paramName + '=' + paramValue) == -1) {
newUrl = newUrl + (newUrl.indexOf('?') > 0 ? '&' : '?') + paramName + '=' + paramValue
}
window.history.pushState('', document.title, newUrl);
return newUrl;
}
function getUrlParameters() { // this to get all parameters
var sParam = 'p'; var viewParam = 'v'; var lanPram = 'l'; var ukomPram = 'uk'; var catPram = 'ca'; var ucatPram = 'uc';
l = getUrlParameter(lanPram);
ukmun = getUrlParameter(ukomPram);
kat = getUrlParameter(catPram);
uKat = getUrlParameter(ucatPram);
pagenumber = getUrlParameter(sParam);
viewIndex = getUrlParameter(viewParam);
if (l || l == 0) { l = l; } else { l = replaceUrlParam(lanPram, 0); }
if (ukmun) { ukmun = ukmun; } else { ukmun = replaceUrlParam(ukomPram, 0); }
if (kat) { kat = kat; } else { kat = replaceUrlParam(catPram, 0); }
if (uKat) { uKat = uKat; } else { uKat = replaceUrlParam(ucatPram, 0); }
if (viewIndex) { viewIndex = viewIndex; } else { viewIndex = 'l'; }
if (pagenumber) { pagenumber = pagenumber; } else { pagenumber = 1; }
}
这个工作,但它调用许多功能replaceUrlParam
和功能而大的事情,我不喜欢的是当网页加载时使用这些网址,然后,如果我想回到以前的页面也被追溯到每个参数
例如:如果有这个网址myfile.php?p=1&v=l&l=0&uk=0&ca=0&uc=0
然后如果我点击上一步上一个页面的浏览器我回去一个参数一样,
myfile.php?p=1&v=l&l=0&uk=0&ca=0
然后再往前走,它停留在相同的页面中,像下一个参数myfile.php?p=1&v=l&l=0&uk=0
等等,直到参数消失。
围绕这3个功能是否有简单的工作使它更容易和简单?
谢谢。
可能是http://stackoverflow.com/questions/979975/how-to-get-the-value-from-the-url-parameter的副本 – deltree
@deltree没有抱歉,它完全不同。看看他问的其他答案。不要只阅读其他答案而不做重复。我想你只是阅读tittle –