2012-02-03 33 views
0

我正在尝试使用JavaScript来获取用户的地理位置,因此我可以在javascript代码的另一部分中将该信息用作参数,但是我无法获得正确的范围。地理位置函数中的JavaScript变量作用域

这是我的代码。在成功函数内部执行警报工作正常,但如果我尝试访问函数外部的任何位置的变量,我会得到未定义的值。我将如何去解决这个问题?

var lat; var long; 
function success(position) { 
lat = position.coords.latitude; 
long = position.coords.longitude; 
alert(lat); 
} 

function error(msg) { 

} 

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(success, error); 

} else { 
    error('not supported'); 
} 
+0

欢迎来到** async **的美妙世界!你不能那样做。 – SLaks 2012-02-03 00:37:16

+0

我没有看到你想在'success()'之外引用'lat'的地方。 – gilly3 2012-02-03 00:43:10

+0

@ gilly3 - 我在if语句之后加入了它,然后将它移入成功函数中。它只适用于成功功能。我想我正在寻找一些方法来等待直到返回值才尝试访问它 – bsod99 2012-02-03 00:45:42

回答

1

您希望您的代码以这样的工作:

navigator.geolocation.getCurrentPosition(success, error); 
alert("Your position is " + lat + ", " + long + "."); 
// do some more stuff with lat and long 

但是,success()还没有被调用呢,所以lat仍然是不确定的。 这就是你的成功处理程序的用途。所有需要在获取位置后执行的代码都放在成功处理程序中。这将工作:

navigator.geolocation.getCurrentPosition(function (position) { 
    success(position); 
    alert("Your position is " + lat + ", " + long + "."); 
    // do some more stuff with lat and long 
}, error);