提供此URL
https://www.rositarococo.com/gracias.html?hwA-qty-andrea-cobre=2&hwA-qty-sol=1&hwA-qty-valen=1&hwA-qty-mo%C3%B1o-2=1&entry.1471599855=38-andrea-cobre%2C%2037-mo%C3%B1o-2%2C%2036-sol%2C%2036-valen%2C%20&entry.1460904554=sebastian%20flichtentrei&entry.53830725=1156566&entry.1465946249=sflich86%40gmail.com&entry.978809450=TARJETA%20DE%20CR%C3%89DITO&entry.951592426=lavalle%20322&entry.1743418466=ramos%20mejia&entry.59648134=bs%20as&entry.1005165410=1704&entry.541001873=32420573&entry.17650825=A%20DOMICILIO&entry.1209868979=https%3A%2F%2Fwww.rositarococo.com%2F&fvv=1&fbzx=5661184097173102736&pageHistory=0
有几个不同名称的参数,它们包含“数量”
我希望能够用“ qty”计算每个参数的值
在此示例中为
hwA-qty-andrea-cobre=2
hwA-qty-sol=1
hwA-qty-valen=1
hwA-qty-mo%C3%B1o-2=1
结果将是:5
我不知道如何选择所有包含“数量”的参数值
要访问我使用的URL参数:
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
}
}
};
但是然后我不知道如何访问包含数量的所有参数,并可能使用通配符将所有值加在一起汇总为一个变量?
var qtyparameter = getUrlParameter('*qty*');
使用正则表达式和.test()
方法。
由于要获取所有匹配的参数,因此无法在参数匹配时立即返回,因此需要返回所有值的数组。
function getMatchingUrlParameters(regexp) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i,
results = {};
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0].test(regexp)) {
results[sParameterName[0]] = decodeURIComponent(sParameterName[1]);
}
}
return results;
}
然后您可以打电话
var qtyParams = getMatchingUrlParameters(/-qty-/);
结果将是:
{
"hwA-qty-andrea-cobre": "2",
"hwA-qty-sol": "1",
"hwA-qty-valen": "1",
"hwA-qty-mo%C3%B1o-2": "1"
}
然后您可以将属性的所有值加起来。