Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量从一个函数传递到另一个javascript_Javascript_Function - Fatal编程技术网

将变量从一个函数传递到另一个javascript

将变量从一个函数传递到另一个javascript,javascript,function,Javascript,Function,(我在谷歌地图项目上工作) 我试图将latlon变量形式函数showPosition传递给hello函数,但我做不到 当我在showPosition功能中打印latlon时,一切正常。 当我在hello函数上打印latlon时,我得到一个空白页 var-latlon; window.onload=函数getLocation(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(showPosition,showError); }否则

(我在谷歌地图项目上工作) 我试图将latlon变量形式函数showPosition传递给hello函数,但我做不到

当我在showPosition功能中打印latlon时,一切正常。 当我在hello函数上打印latlon时,我得到一个空白页

var-latlon;
window.onload=函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(showPosition,showError);
}否则{
x、 innerHTML=“此浏览器不支持地理位置。”;
}
}
功能显示位置(位置){
var latlon=位置.coords.latitude+“,”+位置.coords.latitude;
/*文件编写(latlon)*/
}
函数hello(){
可变拉特隆=拉特隆;
document.write(变量latlon);
}
showPosition();
你好;
功能错误(错误){
开关(错误代码){
案例错误。权限被拒绝:
x、 innerHTML=“用户拒绝了地理位置请求。”
打破
案例错误。位置不可用:
x、 innerHTML=“位置信息不可用。”
打破
大小写错误。超时:
x、 innerHTML=“获取用户位置的请求超时。”
打破
案例错误。未知错误:
x、 innerHTML=“发生未知错误。”
打破
}

}
只需删除
var

function showPosition(position) {
   latlon = position.coords.latitude + "," + position.coords.longitude;
   /*document.write (latlon); */
}
事实上,无论何时通过关键字短语
var
定义变量,都会使该变量在该范围内为局部变量,在所有内部函数中为全局变量


您已经将
latlon
定义为全局变量。当您将
var
放在另一个函数的前面时,它将是函数范围内的局部变量。因此,它不会影响全局变量。

您声明了一个全局变量
latlon
,但通过在函数
showPosition
中重新声明它,使其成为局部变量。这将有助于:

var latlon;

window.onload = function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition, showError);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
// You declared global variable laton but then make it local by redeclaring it in function showPosition 
function showPosition(position) {
    /*var*/
    latlon = position.coords.latitude + "," + position.coords.longitude;
    /*document.write (latlon); */
}

当然
showPosition()
从不调用
hello()
,而且
hello()
没有设置为接收任何传入参数
latlon
showPosition()
的局部变量,即仅在该范围内可引用。您需要传递它,或将它写入全局可访问的对象。当您调用showPosition()时,它没有被传递其“position”参数。另外,showPosition()正在声明一个名为“latlon”的局部变量,这意味着它不会设置全局“latlon”变量。这意味着hello()函数将访问尚未触及的全局“latlon”变量。请注意,还有一个问题是,当OP显式调用showPosition()来测试它时,它没有被传递一个位置…我无法删除var。showPosition函数中的var latlon用于getLocation函数。@AlexVandyke,我从您输入的代码中看到,您可以安全地从函数中删除
var
。如果您输入了摘要代码,请用完整代码更新问题。谢谢您的帮助。我改变代码,把坐标放到另一个变量里。但什么也没有/我用新代码更新我的描述。您能检查一下吗?我无法删除变量。在getLocation函数中使用了showPosition函数中的var latlon