2012-03-29 17 views
6

私は上記のコードが原因の緯度変数にposition.coords.latitude格納することはできませんnavigator.geolocation.getCurrentPositionnavigator.geolocation.getCurrentPositionの外に変数を保存しますか? (ジャバスクリプト)

var lat; 
function callback (position) { 
    lat = position.coords.latitude; 
} 
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000}); 
// after getCurrentPosition succeeds 
alert(lat); // this alerts null 

外の変数を引っ張ってJSの範囲でプレイしようとしていますスコープ。これを行う方法はありますか?

答えて

2

async \ ajaxの性質を覚えておく必要があります。あなたはnullを取得する理由

var lat; 
alert(lat); // this alerts null 
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000}); 
function callback (position) { 
    lat = position.coords.latitude; 
} 

この:

これはあなたのコードの実行順序です。 async!async! :)

+0

私が見るに、その位置その後、あなたは

Javscriptは、ジオロケーション値を取り戻すためにjQueryを使用することができます.coords.latitudeは実際にlatに格納されていますか?もしそうなら、どうすればlatのデータを別の変数に転送できますか? – Derek

+0

@Derek。 'lat'パラメータで' callback'から他の関数​​を呼び出します。 – gdoron

0

ドキュメント上の非表示フィールドに入力変数を保存することができます。値取り戻すため

<input hidden id='pos_lat' value='' /> 
    //value = position latitude on load 

<script> 
var lat; 
alert(lat); // this alerts null 
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000}); 
function callback (position) { 
    jQuery('#pos_lat').val(position.coords.latitude); 
} 
</script> 

HTML:

jQuery('#pos_lat').val(); 
+0

'localStorage.setItem(" pos_lat "、position.coords.latitude);を設定するには' localStorage.getItem( "pos_lat"); 'を取得するには' – San

関連する問題