(我在谷歌地圖項目上工作) 我試圖將latlon變量窗體函數showPosition傳遞給hello函數,但是我不能。將變量從一個函數傳遞到另一個函數javascript
當我在showPosition函數中打印latlon時,一切正常。 當我在hello函數上打印latlon時,我得到空白頁面。
var latlon;
window.onload = function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, showError);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
var latlon = position.coords.latitude + "," + position.coords.longitude;
/*document.write (latlon); */
}
function hello() {
variablelatlon = latlon;
document.write (variablelatlon);
}
showPosition();
hello();
function showError(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
x.innerHTML = "User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML = "Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML = "The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML = "An unknown error occurred."
break;
}
}
我我的代碼改變了這一點。但我沒有看到任何結果。
var x = document.getElementById("demo");
var coordlat;
var coordlng;
window.onload = function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, showError);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
var latlon = position.coords.latitude + "," + position.coords.longitude;
coordlat = position.coords.latitude;
coordlng = position.coords.longitude;
}
function hello() {
document.write (coordlat);
document.write (coordlng);
}
function showError(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
x.innerHTML = "User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML = "Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML = "The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML = "An unknown error occurred."
break;
}
}
showPosition();
hello();
那麼'showPosition()'不會調用'hello()',並且'hello()'沒有設置爲接收任何傳入參數。 'latlon'是'showPosition()'的局部變量,即僅在該範圍內可引用。你需要傳遞它,或者將它寫入全局可訪問的東西。 – Utkanos
當你調用showPosition()時,它沒有被傳遞它的'position'參數。另外,showPosition()聲明瞭一個名爲'latlon'的LOCAL變量,這意味着它不會設置你的全局'latlon'變量。這意味着hello()函數將訪問未觸及的全局「latlon」變量。 – Code4aliving
請注意,您[絕對不能使用'document.write'](http://stackoverflow.com/q/802854/1048572) – Bergi