无法更改全局变量 JS 的值



>我有 2 个全局变量:Lon 和 Lat我想在HTML5提供的地理定位功能中更改这些变量的值:这是我的代码:

window.lat={{geo['latitude']}};
window.lon={{geo['longitude']}};
var SK= readCookie('SK');
if(SK==1)
{
    navigator.geolocation.getCurrentPosition(function(e){
    window.lat=e.coords.latitude;
    window.lon=e.coords.longitude;
    window.zoomi=15;
    })
}

窗口 .lat 的最终值始终为

window.lat={{geo['latitude']}}

有谁知道为什么?

PS:SK==1 是正确的,在函数 (e) 中,我试图提醒这些值,它们确实发生了变化。但是一旦离开函数,一切都消失

Javascript 始终是同步和单线程的,所以如果你在回调后检查 window.lat,它甚至在 gelocation 调用之前就会被执行,并且它具有相同的值.geolocation 需要几秒钟才能获得值,你必须在回调功能中编写代码或编写一个函数来使用 geolcoation 值。

window.lat=1;
window.lon=3;
var SK= 1
if(SK==1)
{
    navigator.geolocation.getCurrentPosition(showPosition);
}

//anything written here will be executed before even the getCurrentPosition retuns or sets the results
function showPosition(position)
{
     alert("Latitude: " + position.coords.latitude +  "-Longitude: " + position.coords.longitude); 
    //write your code here to use the location 
} 

这是JSFIDDLE http://jsfiddle.net/Xa64Q/解释如果我们在几秒钟后运行警报,它会返回正确的值

使用调试器(如 Chrome 开发工具或 Firefox 的 Firebug)逐步完成它。此代码有效,原则上相同。它适用于这种变量赋值:

window.x = 1;
function change() {
 window.x = 2;   
}
change();
alert(window.x);

我的猜测是getCurrentPosition调用突然失败。顺便说一句,该调用需要一个错误回调处理程序,因此您应该为代码定义一个。

相关内容

  • 没有找到相关文章

最新更新