为什么这个脚本返回“'空'不是一个对象'?
问题描述:
请问您为什么这个脚本正在返回正确的方向指向我'null' is not an object
?为什么这个脚本返回“'空'不是一个对象'?
<script>
var pageDetailsSecond = "aaaaa";
if(pageDetailsSecond.match("¢er=(.*)&zoom=").length) {
var mapSrc = pageDetailsSecond.match("¢er=(.*)&zoom=");
var mapSrc = mapSrc.split(",");
var card_Latitude = mapSrc[0];
var card_Longitude = mapSrc[1];
}
else {
var card_Latitude = '';
var card_Longitude = '';
}
</script>
感谢您的任何帮助。
答
"aaaaa".match("¢er=(.*)&zoom=")
为空因此,您的.length
调用将失败。
试着改变你的代码是这样的:
<script>
var pageDetailsSecond = "aaaaa";
var matches = pageDetailsSecond.match("¢er=(.*)&zoom=");
if(matches != null && matches.length > 1) {
var mapSrc = matches[matches.length - 1];
var mapSrc = mapSrc.split(",");
if(mapSrc.length == 2) {
var card_Latitude = mapSrc[0];
var card_Longitude = mapSrc[1];
}
}
else {
var card_Latitude = '';
var card_Longitude = '';
}
</script>
答
您的pageDetailsSecond.match("¢er=(.*)&zoom=")
是null
所以它没有length
属性。因此,当您尝试检查它时发生错误length
。
试试这个:
if(pageDetailsSecond.match("¢er=(.*)&zoom=") !== null) {
答
match
将返回null如果没有匹配的,你可以不写null.length
。实际上,Chrome报告TypeError:无法读取空值为的属性“长度”。
这里有一个解决方案,正则表达式修复沿:
var pageDetailsSecond = "aaaaa";
var mapSrc = pageDetailsSecond.match("¢er=(.+?),(.+?)&zoom=");
if (mapSrc) {
var card_Latitude = mapSrc[1];
var card_Longitude = mapSrc[2];
} else {
card_Latitude = '';
card_Longitude = '';
}
我修改了正则表达式,所以你不必split
之后。
答
有两件事情你必须在这里解决。
首先,你的条件语句假定.length
属性,但该.match()
方法返回一个值null
当它没有找到一个匹配(因此,没有.length
属性)。有关.match()
的详细信息,请查看this MDN page。
其次,在您的正则表达式中,您已将匹配的lat,lng
与(.*)
分组。这意味着.match()
将返回数组与2场比赛 - 第一个将匹配整个表达式,第二个将匹配您的组:
["¢er=34,-83&zoom=", "34,-83"]
你感兴趣的第二场比赛。下面是一个工作示例:
<script>
var pageDetailsSecond = "¢er=34,-83&zoom=",
matches = pageDetailsSecond.match("¢er=(.*)&zoom=");
if(matches) {
var mapSrc = matches[1].split(",");
var card_Latitude = mapSrc[0];
var card_Longitude = mapSrc[1];
}
else {
var card_Latitude = '';
var card_Longitude = '';
}
</script>
'pageDetailsSecond.match(“&center =(。*)&zoom =”)'评估为null,然后尝试使用null.length。请参阅http://jsfiddle.net/9wLkbnch/ – 2014-09-26 23:46:29
哪个浏览器? - – 2014-09-26 23:47:23
@Felix Kling:Safari。 – roberto 2014-09-26 23:48:04