我是一名c ++程序员,因此java脚本中的以下未定义变量错误对我来说很奇怪。我已经定义了一个全局变量directionResult
,下面的代码初始化了它的值:
function calcRoute() {
var iMap = {
departure:"tiran,esfahan",
destination:"esfahan"
}
var request = {
origin : iMap.departure,
destination : iMap.destination,
travelMode : google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
document.getElementById("log").innerHTML = result.routes[0];
directionResult = result;
}
});
}
在最后,如果directionResult
将等于result
,这是回调函数的参数。但在另一个功能中:
function showSteps() {
var myRoute = directionResult.routes[0].legs[0];
var point = myRoute.steps[index].start_point;
var inst = myRoute.steps[index++].instructions;
obj.setPosition(point);
document.getElementById('inst').innerHTML = inst;
map.panTo(point);
if (index >= myRoute.steps.length)
clearInterval(timer);
}
当我想在第一行使用directionResult
时,我遇到了这个错误:
TypeError:directionResult未定义
我该如何解决这种奇怪的行为?谢谢。
答案 0 :(得分:0)
directionResult未定义的一个可能原因可能是因为您在设置之前尝试引用它。虽然你的showSteps()函数出现在calcRoute()函数之后,但是在触发directionsService.route()回调之前不会设置directionResult,这可能是在AJAX请求之后发生的(大概)。
尝试从directionsService.route()回调函数中调用showSteps()。