我正尝试将用户的位置记录到一个数组中,以供以后使用。在尝试检查它是否正常工作时,我发现整个数组都将记录到控制台,但是如果我尝试仅记录数组中的一个元素,则会出现错误。想知道是否有人可以帮助我理解原因。
Javascript在下面
window.onload = function getLocation() {
var userlocation = [];
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
function showPosition(position) {
userlatitude = position.coords.latitude;
userlongitude = position.coords.longitude;
userlocation.push(userlatitude);
userlocation.push(userlongitude);
}
console.log(userlocation[0]);
console.log(userlocation);
}
我希望console.log(userlocation [0])输出用户纬度,但它会以未定义的形式出现。
答案 0 :(得分:0)
navigator.geolocation.getCurrentPosition
是异步的。在执行控制台语句时,尚未填充该数组。看起来好像整个数组都记录在控制台中的原因是,您的浏览器的开发工具正在显示指向数组对象的指针,而不是在控制台声明时显示数组的内容。
如果要确保您拥有getCurrentPosition
函数提供的值,则应将依赖于它们的代码放在成功回调中:
window.onload = function getLocation() {
var userlocation = [];
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
function showPosition(position) {
userlatitude = position.coords.latitude;
userlongitude = position.coords.longitude;
userlocation.push(userlatitude);
userlocation.push(userlongitude);
console.log(userlocation[0]);
console.log(userlocation);
}
}