2015-12-08 41 views
0

下面的代码部分使用Geolocation.getCurrentPosition()方法确定Web用户的地理位置,将其保存到全局初始化变量,然后将其写入显示。全局变量稍后将在脚本中用于另一次计算,但是,如果尝试这样做,则无法识别变量的新值,并且结果未定义。无法在地理位置方法中识别全局变量 - JavaScript

$(document).ready(function() { 
    var lat; 
    var long; 

    navigator.geolocation.getCurrentPosition(success); 

    function success(position) { 
    lat = position.coords.latitude; 
    long = position.coords.longitude; 
    $('#geoLocInFunc').text(lat + ',' + long); 
    }; 

    $('#geoLocOutFunc').text(lat + ',' + long); 

}) 

我敢肯定有不同的方式来得到相同的结果,但是,我需要知道,如果我误解有关函数,方法或全局变量的东西。

+0

'getCurrentPosition'是异步的,在'success'被调用并且变量被填充之前,您打印'lat'。 –

+0

我能做些什么才能成功调用“$('#geoLocOutFunc')。text(lat +','+ long);”行执行? –

+0

你不需要,在'success()'里面做或者从那里调用一个函数 –

回答

0

一旦浏览器确定了地理位置,您的成功函数将只会被调用。它不会立即被调用。因此这个语句在成功函数定义之后:

$('#geoLocOutFunc').text(lat + ',' + long); 

在执行成功之前被调用。

了解发生什么的最好方法是在适当的位置添加警报语句。