是否在navigator.geolocation.getCurrentPosition外部保存变量?(javascript)

是否在navigator.geolocation.getCurrentPosition外部保存变量?(javascript),javascript,geolocation,navigator,w3c-geolocation,Javascript,Geolocation,Navigator,W3c Geolocation,我试图利用js的作用域从navigator.geolocation.getCurrentPosition中提取一个变量 var lat; function callback (position) { lat = position.coords.latitude; } navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000}); // after getCurrentPosition succeeds al

我试图利用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

由于作用域的原因,上述代码无法在lat变量中存储position.coords.latitude。有办法做到这一点吗?

您必须记住异步\ajax的本质

这是代码的执行顺序:

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

这就是为什么会得到null异步异步:)

您可以保存位置变量以在文档准备就绪时输入隐藏字段。之后,您可以使用jQuery返回地理位置值

脚本:

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

我明白了,所以position.coords.lation确实存储在lat中?如果是的话,什么时候,我如何将lat中的数据传输到另一个变量?@Derek。使用
lat
参数从
callback
调用其他函数,以设置
localStorage.setItem(“pos_lat”,position.coords.latitude)
获取
localStorage.getItem(“pos_lat”)
    <input hidden id='pos_lat' value='' /> 
    //value = position latitude on load
jQuery('#pos_lat').val();