为什么我的变量在我的函数之外未定义?

丹尼尔

我是 javascript 新手,我正在尝试构建一个网站,该网站在用户区域显示温度,但是我的lalg变量在我的showPosition()函数之外未定义,因此我无法成功调用 API 来获取天气。

这是完整的代码:

var la;
var lg;

function getLocation() {
 if (navigator.geolocation)
   navigator.geolocation.getCurrentPosition(showPosition); 
}

function showPosition(position) {
 la= position.coords.latitude;
 lg= position.coords.longitude;
}

getLocation();

var url="https://fcc-weather-api.glitch.me/api/current?lat=" + la + "&lon=" + lg;
document.getElementById("im").innerHTML="Latitude:" + la;

fetch(url)
 .then((resp) => resp.json())
 .then(function(data) {
   document.getElementById("temper").innerHTML="Temperature:" + data.main.temp;
 })
 .catch(function(error) {
   console.log("error: " + error);
 });

我决定测试我的lalg变量是否正确document.getElementById("im").innerHTML="Latitude:" + la,但我得到Latitude:undefined. 我在showPosition()函数内部进行了相同的测试,并且正确定义了变量。我该如何解决这个问题?

斯蒂芬

问题是它showPosition不会立即被调用(例如初始化 GPS 需要一些时间)。因此,您必须等待您的请求,直到收到您的位置数据:

var la;
var lg;

function getLocation() {
 if (navigator.geolocation)
   navigator.geolocation.getCurrentPosition(showPosition); 
}

function showPosition(position) {
 la = position.coords.latitude;
 lg = position.coords.longitude;

 var url="https://fcc-weather-api.glitch.me/api/current?lat=" + la + "&lon=" + lg;
 document.getElementById("im").innerHTML="Latitude:" + la;

 fetch(url)
  .then((resp) => resp.json())
  .then(function(data) {
    document.getElementById("temper").innerHTML="Temperature:" + data.main.temp;
  })
  .catch(function(error) {
    console.log("error: " + error);
  });
}

getLocation();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章