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

問題は、関数で同じ名前の変数を宣言していることです。これは、グローバル変数とローカル変数の 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 に答える