“奇怪”;未定义变量";在一段JavaScript代码中 我是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; } }); }
最后,if“奇怪”;未定义变量";在一段JavaScript代码中 我是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; } }); },javascript,Javascript,最后,ifdirectionResult将等于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(
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未定义
如何解决此奇怪行为?谢谢。directionResult未定义的一个可能原因可能是您试图在设置之前引用它。尽管showSteps()函数出现在calcRoute()函数之后,但directionResult直到DirectionService.route()回调被激发后才被设置,这可能是在AJAX请求之后发生的
请尝试从directionsService.route()回调函数中调用showSteps()。是否可以打开代码?这里没有足够的信息说明问题。其他函数是否在同一个JavaScript文件中?您可能试图从错误的范围访问变量。是否确认
result
在写入directionResult
时未定义该变量?我猜您的showSteps()函数是在传递给directionservice.route()的回调执行之前被调用的。@Mythril使用tilde键(上面的另一个字符)在注释中执行代码时。