Javascript &引用;无法读取属性';匹配';“无效”的定义;
我有这样的剧本:Javascript &引用;无法读取属性';匹配';“无效”的定义;,javascript,jquery,null,match,Javascript,Jquery,Null,Match,我有这样的剧本: function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url)
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var dynamicContent = getParameterByName('utm_term');
$(document).ready(function() {
if (dynamicContent.match(/buy/i)) {
$('#buy').show();
}
else {
$('#default-content').show();
}
});
当url中有任何参数时,它工作正常,其他参数工作正常,#deafult内容显示
问题是,当我有没有参数的干净url时,默认内容不会显示,因为“无法读取null的属性'match'
知道如何解决这个问题吗?您正在为
返回null
!结果
,然后您无法对其进行匹配
尝试合并两个检查并返回空字符串:-
函数getParameterByName(名称、url){
如果(!url)
url=window.location.href;
name=name.replace(/[\[\]]/g,\\$&);
var regex=new RegExp(“[?&]”+name+”(=([^]*)和|#|$),
结果=regex.exec(url);
如果(!results | |!results[2])
返回“”;
返回组件(结果[2]。替换(/\+/g,”);
}
var dynamicContent=getParameterByName('utm_term');
$(文档).ready(函数(){
if(dynamicContent.match(/buy/i)){
$('买').show();
}否则{
$(“#默认内容”).show();
}
});代码>
测试