javascript、jquery 地理定位错误

javascript, jquery geolocation bug

我有以下代码:

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(posi) {
    var lat = posi.coords.latitude;
    var lon = posi.coords.longitude;
    console.log(lat);
  }, showError);
} else {
  $(".position").html("Geolocation is not supported by this browser");
}

function showError(error) {
  switch (error.code) {
    case error.PERMISSION_DENIED:
      alert("User denied the request for Geolocation.");
      break;
    case error.POSITION_UNAVAILABLE:
      alert("Location information is unavailable.");
      break;
    case error.TIMEOUT:
      alert("The request to get user location timed out.");
      break;
    case error.UNKNOWN_ERROR:
      alert("An unknown error occurred.");
      break;
  }
}

alert(lat);
$(".weather").html("<p>" + lat + "</p>");

问题是在底部的警报(纬度)它说 它是未定义的,并且在 if 条件开始时 console.log(lat) 工作得很好!底部出了什么问题? 我试过制作全局变量 lon, lat 之前 if 但同样的事情发生了。

作为参考,这里是根据之前的评论更正后的代码:

function showError(error) {
  [...] // No change.
}

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(posi) {
    var lat = posi.coords.latitude;
    var lon = posi.coords.longitude;
    console.log(lat);
    alert(lat);
    $(".weather").html("<p>" + lat + "</p>");
  }, showError);
} else {
  $(".position").html("Geolocation is not supported by this browser");
}