【发布时间】:2015-04-07 18:47:23
【问题描述】:
下面是我获取从 A 点到 B 点的距离(地址数组)的简单代码。问题在于“alert(end[i]+distanceKM);”,尤其是变量 distanceKM。
我认为我做得对。变量 distanceKM 在 for 循环之外声明,值在 for 循环中设置。我的警报在 for 循环内。
但我还是得到了
警报值:4700 Highway 280undefined 等等......
好像没有设置distanceKM,=未定义,我有:distanceKM=response.routes[0].legs[0].distance.value / 1000;
测试代码:
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<title>Distance Calculator</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();
}
function calcRoute() {
var start = document.getElementById("start").value;
var end = document.getElementById("end").value.split('@@');
var distanceKM;
for (i = 0; i < end.length; i++)
{
var request = {
origin:start,
destination:end[i],
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status)
{
if (status == google.maps.DirectionsStatus.OK)
{
directionsDisplay.setDirections(response);
distanceKM=response.routes[0].legs[0].distance.value / 1000;
}
});
alert(end[i]+distanceKM);
}
}
</script>
</head>
<body onload="initialize()">
<div>
<p>
<label for="start">Start: </label>
<input type="text" name="start" id="start" value="815010 NE 36th Steet, Redmond, WA, USA" />
<label for="end">End: </label>
<input type="text" name="end" id="end" value="4700 Highway 280, Birmingham, AL, USA@@6900 US Highway 90, Suite 2, Daphne, AL, USA@@549 Brookwood Village, Homewood, AL, USA@@4800 Whitesburg Dr., Huntsville, AL, USA" />
<input type="submit" value="Calculate Route" onclick="calcRoute()" />
</p>
<p>
<label for="distance">Distance (km): </label>
<input type="text" name="distance" id="distance" readonly="true" />
</p>
</div>
</body>
</html>
【问题讨论】:
标签: javascript google-maps scope