将变量保存在navigator.geolocation.getCurrentPosition之外? (JavaScript的)

时间:2012-03-29 23:28:25

标签: 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
alert(lat); // this alerts null

由于范围的原因,上面的代码无法在lat变量中存储position.coords.latitude。有没有办法做到这一点?

2 个答案:

答案 0 :(得分: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。 异步!异步!:)

答案 1 :(得分:0)

您可以将Position变量保存到文档就绪输入隐藏字段。之后,您可以使用jQuery获取Geolocation值

Javscript:

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

HTML:

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

获取价值:

<emp salesid="1">
    <report>07-14-2015_DPLOH_SalesID_1.pdf</report>
    <report>07-17-2015_DPLOH_SalesID_1.pdf</report>
    <report>07-14-2015_DTE_SalesID_1.pdf</report>
    <report>07-14-2015_IDT_SalesID_1.pdf</report>
    <report>07-14-2015_Kratos_SalesID_1.pdf</report>
    <report>07-14-2015_Spark_SalesID_1.pdf</report>
</emp>