6

jsのスコープで遊んで、navigator.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

上記のコードは、スコープが原因で、position.coords.latitudeをlat変数に格納できません。これを行う方法はありますか?

4

2 に答える 2

2

async\ajaxの性質を覚えておく必要があります。

これは、コードの実行順序です。

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

これがあなたがnullになる理由です。非同期!非同期!:)

于 2012-03-29T23:31:20.887 に答える
0

Position変数を保存して、ドキュメントレディの非表示フィールドに入力できます。その後、jQueryを使用してジオロケーション値を取り戻すことができます

Javscript:

<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:

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

価値を取り戻すには:

jQuery('#pos_lat').val();
于 2015-07-19T05:55:57.790 に答える