当您运行代码时alert(x)
,会立即触发。这意味着在支持 GeoLocation 的浏览器中x
还没有机会设置,这就是您收到undefined
消息的原因。
这样做的方法是:
var x = 0;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, error);
} else {
test(); // call other function or display error message
}
function showPosition(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
x += lat;
test();
}
function error(){
console.warn('ERROR(' + err.code + '): ' + err.message);
}
function test() {
alert(x);
}
看起来您已经从 W3Schools 复制并粘贴了代码,因此如果is not as is not a DOM 元素,因此您将收到undefined
错误消息,因此它没有属性。navigator.geolocation
true
x
innerHTML
在上面的代码test();
中,用于显示一个值为 的弹出框x
。在您的代码test();
中应该是您要运行的下一个函数。例如,它可以是一个根据用户当前位置(如果可用)获取数据的函数。
更新:这是使用数据填充隐藏字段的示例。
var lat = 0, lng = 0;
function showPosition(position) {
lat = position.coords.latitude;
lng = position.coords.longitude;
test();
}
然后使用:
HTML:
<input type="hidden" id="latInput" />
<input type="hidden" id="lngInput" />
JS:
function test(){
$("#latInput").val(lat);
$("#lngInput").val(lng);
}
// or
function test(){
$.post("your-script.php", { lat: lat, lng: png })
.done(function(data) {
// success
})
.fail(function() {
// fail
});
}