2017-03-22 44 views
0

控制台日志记录lat返回undefined,而我想为它指定position.coords.latitude的值。问题是什么?如何在Javascript中为异步函数内部分配全局变量?

$(document).ready(function(){ 
 
    var lat, lon; 
 

 
    if (navigator.geolocation) { 
 
    navigator.geolocation.getCurrentPosition(function(position) { 
 
     lat=position.coords.latitude; 
 
     lon=position.coords.longitude; 
 
    }); 
 
    console.log(lat); 
 
    } 
 
});  
 

+0

mayb e'navigator.geolocation.getCurrentPosition'不会发生。创建一个'else'的情况,并检查。 – vaso123

+0

你有没有尝试把'console.log'放在'navigator.geolocation.getCurrentPosition'里面? – Chinito

+0

'lat = position.coords.latitude;'这条线路不工作 –

回答

0

您无法登录那里,你必须需要回调函数来实现自己的目标

<script> 
    var x = document.getElementById("demo"); 
    function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
    } 
} 
function showPosition(position) { 
    console.log("Latitude: " + position.coords.latitude +" Longitude: "   + position.coords.longitude) 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 
</script> 
+0

虽然我从阅读代码中学到了一些东西,但它并不回答我的问题。我想获得** position.coords.latitude **的价值 –

+0

以外您可以这样做只有功能showPosition(position){ lat = position.coords.latitude; } –

+0

只有在回调函数中才能为全局变量赋值 –

0

使用回调函数 $(文件)。就绪(函数() { var lat,lon;

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
     lat=position.coords.latitude; 
     lon=position.coords.longitude; 
     callbackFunction(); 
    }); 
    } 

    function callbackFuncton(){ 
     console.log(lat); 
     //you can use your lat and lon here 
    } 
});  
相关问题