Javascript 为什么我的变量不接受函数中的值?
我想在屏幕上显示纬度上的var经度,但我认为该函数是最后执行的,我被初始值卡住了。 目标是在屏幕上打印浏览器返回的地理位置的精确值。 谢谢Javascript 为什么我的变量不接受函数中的值?,javascript,jquery,html,function,geolocation,Javascript,Jquery,Html,Function,Geolocation,我想在屏幕上显示纬度上的var经度,但我认为该函数是最后执行的,我被初始值卡住了。 目标是在屏幕上打印浏览器返回的地理位置的精确值。 谢谢 <!DOCTYPE html> <head> <script> var longitude = "10"; var latitude = "20"; </script> </head> <html> <body onload="getLocation()">
<!DOCTYPE html>
<head>
<script>
var longitude = "10";
var latitude = "20";
</script>
</head>
<html>
<body onload="getLocation()">
<script>
var longitude = "30";
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
latitude = position.coords.latitude;
longitude = position.coords.longitude;
alert('aaab:' +longitude);
});
}else {
alert("Geolocation API is not supported in your browser.");
}
}
</script>
<script>
alert("ccc");
document.write (longitude);
document.write (latitude);
</script>
</body>
</html>
var longitude=“10”;
var纬度=“20”;
var longitude=“30”;
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
纬度=位置坐标纬度;
经度=position.coords.longitude;
警报('aaab:'+经度);
});
}否则{
警报(“您的浏览器不支持地理位置API”);
}
}
警报(“ccc”);
document.write(经度);
document.write(纬度);
我知道它在函数内部工作,但是有没有办法在函数外部使用这些变量?我只想把它们存储在一个全局变量中,可以在任何地方调用。谢谢在您编写经度和纬度时,可能还没有调用地理位置回调。也许您可以使用jQuery将正确的值写入屏幕
<script>
var longitude = "30";
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
latitude = position.coords.latitude;
longitude = position.coords.longitude;
//alert('aaab:' +longitude);
// Use jQuery to write your values to the html
$("#longitude").html(longitude);
$("#latitude").html(latitude);
});
}else {
alert("Geolocation API is not supported in your browser.");
}
}
</script>
<html>
...
<body onload="getLocation()">
<div id="longitude"></div>
<div id="latitude"></div>
</body>
</html>
var longitude=“30”;
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
纬度=位置坐标纬度;
经度=position.coords.longitude;
//警报('aaab:'+经度);
//使用jQuery将值写入html
$(“#经度”).html(经度);
$(“#纬度”).html(纬度);
});
}否则{
警报(“您的浏览器不支持地理位置API”);
}
}
...
运行更新document.write的代码之前,正在执行document.write。您需要在回调中执行document.write,如下所示:
<!DOCTYPE html>
<head>
<script type='text/javascript'>
var longitude = "10";
var latitude = "20";
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
latitude = position.coords.latitude;
longitude = position.coords.longitude;
document.write(latitude+" / "+longitude);
});
}else{
alert("Geolocation API is not supported in your browser.");
}
}
</script>
</head>
<body onload="getLocation()">
</body>
</html>
var longitude=“10”;
var纬度=“20”;
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
纬度=位置坐标纬度;
经度=position.coords.longitude;
文件。书写(纬度+“/”+经度);
});
}否则{
警报(“您的浏览器不支持地理位置API”);
}
}
试试这个:
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(displayLocation);
}else {
alert("Geolocation API is not supported in your browser.");
}
}
function displayLocation(position) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
alert('aaab:' +longitude);
}
正确,对
getCurrentPosition()
的调用是异步的。浏览器使用一些线索(比如你的IP地址)来查询地理定位服务(比如谷歌)。一个快速的解决方案是将document.write()
语句放在您定义的回调中。我将编辑此答案以显示这一点。我输入了我自己的,但是@Syjin打败了我:)你又打败了我,先生:)我知道它像你说的那样工作,我有“警报('aaab:'+经度);”工作正常,但我需要在函数之外使用这些变量。你可以在任何地方使用它们。您只需等待调用getCurrentPosition()
即可。是的,我想,但是,我不知道怎么做,页面首先执行主体,然后执行函数。我知道它在函数内部工作,但有没有办法在外部使用这些变量?我只想把它们存储在一个全局变量中,可以在任何地方调用。感谢全局变量被设置为纬度和经度。您的问题很简单,它在您的原始document.write运行之前不会发生。为了澄清问题:好的,谢谢你,我明白了