2013-02-13 73 views
0

我想在屏幕上顯示var longitude en latitude,但我認爲該函數正在執行最後,並且我堅持使用初始值。 目標是在屏幕上打印瀏覽器返回的地理位置的確切值。 謝謝!爲什麼我的變量不採取函數中的值?

<!DOCTYPE html> 


<head> 

<script> 
var longitude = "10"; 
var latitude = "20"; 
</script> 




</head> 
<html> 
<body onload="getLocation()"> 


<script> 
var longitude = "30"; 
function getLocation() { 

    if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position){ 
       latitude = position.coords.latitude; 
       longitude = position.coords.longitude; 
       alert('aaab:' +longitude); 
    }); 
    }else { 
        alert("Geolocation API is not supported in your browser."); 
    } 
    } 

</script> 



<script> 
alert("ccc"); 
document.write (longitude); 
document.write (latitude); 

</script> 
</body> 
</html> 

我知道它在函數內工作,但有什麼辦法可以在外面使用這些變量嗎?我只是希望能夠將它們存儲在一個可以在任何地方被調用的全局變量中。謝謝

回答

0

文件撰寫。你需要做的文件撰寫的回調,像這樣:

<!DOCTYPE html> 
    <head> 
    <script type='text/javascript'> 
     var longitude = "10"; 
     var latitude = "20"; 

     function getLocation() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position){ 
      latitude = position.coords.latitude; 
      longitude = position.coords.longitude; 

      document.write(latitude+"/"+longitude); 
      }); 
     }else{ 
      alert("Geolocation API is not supported in your browser."); 
     } 
     } 

    </script> 
    </head> 
    <body onload="getLocation()"> 

    </body> 
    </html> 
+0

我知道它在函數內部工作,但有什麼方法可以在外部使用這些變量?我只是希望能夠將它們存儲在一個可以在任何地方被調用的全局變量中。謝謝 – 2013-02-13 18:06:00

+0

全局變量*被設置爲經度和緯度。你的問題很簡單,直到你的原始document.write運行之後纔會發生。爲了清楚點:http://jsfiddle.net/Asvjg/ – Doug 2013-02-13 18:35:01

+0

好吧謝謝你,我理解 – 2013-02-14 00:36:10

0

在您編寫經度和緯度時,地理定位回調可能尚未被調用。也許你可以使用jQuery正確的值寫入到屏幕...您的代碼更新是正在運行前正在執行

<script> 
    var longitude = "30"; 
    function getLocation() { 

     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position){ 
       latitude = position.coords.latitude; 
       longitude = position.coords.longitude; 
       //alert('aaab:' +longitude); 

       // Use jQuery to write your values to the html 
       $("#longitude").html(longitude); 
       $("#latitude").html(latitude); 
      }); 
     }else { 
      alert("Geolocation API is not supported in your browser."); 
     } 
    } 

</script> 

<html> 
    ... 
    <body onload="getLocation()"> 
     <div id="longitude"></div> 
     <div id="latitude"></div> 
    </body> 
</html> 
+0

正確的,調用'getCurrentPosition()'是異步的。瀏覽器使用一些線索(如您的IP地址)來查詢地理位置服務(如Google)。一個快速的解決方案是把你的'document.write()'語句放在你定義的回調中。我將編輯這個答案來證明這一點。我正在打我自己的,但@Syjin打我:) – 2013-02-13 17:21:22

+0

你又打我,先生:) – 2013-02-13 17:22:41

+0

@SunilD。對不起:P – Syjin 2013-02-13 17:22:54

0

試試這個:

function getLocation() { 

    if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(displayLocation); 
    }else { 
        alert("Geolocation API is not supported in your browser."); 
    } 
} 

    function displayLocation(position) { 
     latitude = position.coords.latitude; 
     longitude = position.coords.longitude; 
     alert('aaab:' +longitude); 
    } 
相關問題