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(); } });

测试