Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的变量不接受函数中的值?_Javascript_Jquery_Html_Function_Geolocation - Fatal编程技术网

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

Javascript 为什么我的变量不接受函数中的值?,javascript,jquery,html,function,geolocation,Javascript,Jquery,Html,Function,Geolocation,我想在屏幕上显示纬度上的var经度,但我认为该函数是最后执行的,我被初始值卡住了。 目标是在屏幕上打印浏览器返回的地理位置的精确值。 谢谢 <!DOCTYPE html> <head> <script> var longitude = "10"; var latitude = "20"; </script> </head> <html> <body onload="getLocation()">

我想在屏幕上显示纬度上的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>

var longitude=“10”;
var纬度=“20”;
var longitude=“30”;
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
纬度=位置坐标纬度;
经度=position.coords.longitude;
警报('aaab:'+经度);
});
}否则{
警报(“您的浏览器不支持地理位置API”);
}
}
警报(“ccc”);
document.write(经度);
document.write(纬度);

我知道它在函数内部工作,但是有没有办法在函数外部使用这些变量?我只想把它们存储在一个全局变量中,可以在任何地方调用。谢谢

在您编写经度和纬度时,可能还没有调用地理位置回调。也许您可以使用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>

var longitude=“30”;
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
纬度=位置坐标纬度;
经度=position.coords.longitude;
//警报('aaab:'+经度);
//使用jQuery将值写入html
$(“#经度”).html(经度);
$(“#纬度”).html(纬度);
});
}否则{
警报(“您的浏览器不支持地理位置API”);
}
}
...

运行更新document.write的代码之前,正在执行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>

var longitude=“10”;
var纬度=“20”;
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
纬度=位置坐标纬度;
经度=position.coords.longitude;
文件。书写(纬度+“/”+经度);
});
}否则{
警报(“您的浏览器不支持地理位置API”);
}
}
试试这个:

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);
    }

正确,对
getCurrentPosition()
的调用是异步的。浏览器使用一些线索(比如你的IP地址)来查询地理定位服务(比如谷歌)。一个快速的解决方案是将
document.write()
语句放在您定义的回调中。我将编辑此答案以显示这一点。我输入了我自己的,但是@Syjin打败了我:)你又打败了我,先生:)我知道它像你说的那样工作,我有“警报('aaab:'+经度);”工作正常,但我需要在函数之外使用这些变量。你可以在任何地方使用它们。您只需等待调用
getCurrentPosition()
即可。是的,我想,但是,我不知道怎么做,页面首先执行主体,然后执行函数。我知道它在函数内部工作,但有没有办法在外部使用这些变量?我只想把它们存储在一个全局变量中,可以在任何地方调用。感谢全局变量被设置为纬度和经度。您的问题很简单,它在您的原始document.write运行之前不会发生。为了澄清问题:好的,谢谢你,我明白了