我使用以下方法按名称获取参数:
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
我想知道如何更改它以获取包含某些字符串的参数,例如,我想获取包含单词“document”的参数,但整个参数名称不是“document”。
请指教,谢谢。
最佳答案
像这样吗?
val = location.search.match(/document.*?=([^&]*)/)[1]
虽然我宁愿使用一个函数将整个查询字符串转换为一个对象(如 this one ),然后简单地应用一个过滤器:
params = urlParams()
ks = Object.keys(params).filter(function(k) { return k.indexOf("document") >= 0 })
if(ks)
value = params[ks[0]];
这样您就可以轻松支持多个参数(如 document1=foo&document2=bar
)并避免丑陋的动态正则表达式构造。
在旧版浏览器中,您可以使用它代替 Object.keys/filter:
ks = []
for(var k in params)
if(k.indexOf("document") >= 0)
ks.push(k);
关于javascript - 如何使用javascript获取类似(参数名称包含)的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805810/