“无法读取 null 的属性‘match’”
2016-07-14
21006
我有该脚本:
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-content。
问题是,当我有干净的 URL 而没有参数时,#default-content 不会显示,因为“无法读取 null 的属性‘match’”。
有什么想法可以解决这个问题吗?
1个回答
您对
!results
返回了
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);
if (!results || !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();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="default-content" style="display:none;">test</p>
BenG
2016-07-14