2015-12-08 40 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); 

在執行成功之前被調用。

瞭解發生什麼的最好方法是在適當的位置添加警報語句。