1
<script>
var lat ;
if(true) {
        navigator.geolocation.getCurrentPosition(GetLocation);
        function GetLocation(location) {
            var lat = location.coords.latitude;
        }           
};  

alert(lat);
 </script>  

现在我得到 [object HTMLInputElement] ,我在这里做错了吗?

4

1 回答 1

2

问题是,您在函数中声明了一个具有相同名称的变量,这意味着您有两个变量,一个全局变量和一个局部变量。因此,当您警告全局变量时,它没有被设置为任何东西。

您需要做的就是从函数中删除 var 关键字:

// global or other scope

var lat, firstUpdate = false;

if(true) {
    navigator.geolocation.getCurrentPosition(GetLocation);
    function GetLocation(location) {

        // don't use var here, that will make a local variable
        lat = location.coords.latitude;

        // this will run only on the first time we get a location.
        if(firstUpdate == false){
           doSomething();
           firstUpdate = true;
        }

    }           
};  

function doSomething(){
    alert(lat);
}

编辑:

我已经编辑了答案,以展示如何确保在找到第一个修复程序后调用函数。

于 2012-07-14T08:25:23.523 回答