为什么我的变量不接受函数中的值?

时间:2013-02-13 17:15:15

标签: javascript jquery html function geolocation

我想在屏幕上显示var经度纬度,但我认为该函数最后执行并且我坚持使用初始值。 目标是在屏幕上打印浏览器返回的地理位置的确切值。 谢谢!!!

<!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>

我知道它在函数内部工作,但有什么方法可以在外面使用这些变量?我只是希望能够将它们存储在一个可以随处调用的全局变量中。感谢

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

在正在运行更新它的代码之前,

document.write正在执行。您需要在回调中执行document.write,如下所示:

<!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>

答案 2 :(得分: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);
    }