请您指出一下这个脚本返回'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>
感谢您的帮助。
答案 0 :(得分:1)
match
将返回null,并且您无法编写null.length
。实际上,Chrome报告 TypeError:无法读取null 的属性“length”。
这是一个解决方案,以及正则表达式修复:
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
。
答案 1 :(得分:1)
"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>
答案 2 :(得分:1)
这里有两件事需要解决。
首先,您的条件语句假定.length
属性,但.match()
方法在找不到匹配项时返回null
值(因此,没有.length
属性)。有关.match()
。
其次,在正则表达式中,您已将匹配的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>
答案 3 :(得分:0)
您的pageDetailsSecond.match("¢er=(.*)&zoom=")
为null
,因此它没有length
属性。因此,当您尝试检查length
时会发生错误。
请改为尝试:
if(pageDetailsSecond.match("¢er=(.*)&zoom=") !== null) {