コードを実行すると、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 からコードをコピーして貼り付けたように見えるので、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
});
}