我试图加载一些div的谷歌地图图像从一个循环添加一个document.get的值。问题是getLocation()调用在循环的最后一次迭代中出现,但是随后迭代循环n次。JavaScript for循环不执行功能,直到循环结束,然后迭代函数n次数
for(var i = 1; i < length; i++){
var longitude = 1.8612393999999999;
var latitude = 50.7263312;
document.getElementById("longInput").value = longitude;
document.getElementById("latInput").value = latitude;
var mapholder = "mapholderM"+i;
document.getElementById("mapholderValue").value = mapholder;
theMapholder=document.getElementById(mapholder);
getLocation();
}
的getLocation()使用longInput和latInput值lat和LON变量,和作为theMapholder把目标的div图像的地方。地图能够得到坐标,并且在最后或循环结束时也在下面解释了该地图持有者的值。
我认为这不是getLocation()的问题,更多的是我尝试使用它。 通过在getLocation()调用中添加一个警报并查看屏幕上的元素,我知道 元素通过循环和更改进行填充,然后在发生这种情况后,将获取位置调用n次。然后,getLocation()仅获取在给出元素值的迭代完成时设置的值。
在循环开始处添加警报会使循环循环n次,然后只执行一次getLocation()。
刚刚总结: 循环并逐个更改元素值。 完成后,调用getLocation(),并执行相同次数的迭代。 getLocation()现在只能访问元素的最终设置,所以只给出一个div的地图。
院长
更新: 抱歉给不正确的信息:它似乎从我的循环结果的任何方法调用在相同的行为:
function pulse(){
$('#contentDiv').delay(200).fadeOut('slow').delay(50).fadeIn('slow');
}
调用从我的循环这个方法:
for(var i = 1; i < length; i++) {
var longitude = 1.8612393999999999;
var latitude = 50.7263312;
alert("end of loop");
pulse();
}
导致警报n次,然后执行脉冲?抱歉混淆。
院长
更新: 谷歌地图脚本:
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition,showError);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
alert($("#longInput").val()); */
lat= $("#latInput").val();
lon= $("#longInput").val();
latlon=new google.maps.LatLng(lat, lon);
mapholder=theMapholder;
alert("getLocation " + theMapholder);
var myOptions={
center:latlon,zoom:14,
mapTypeId:google.maps.MapTypeId.ROADMAP,
mapTypeControl:false,
navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}
};
var map=new google.maps.Map(theMapholder,myOptions);
var marker=new google.maps.Marker({position:latlon,map:map,title:"You are here!"});
}
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;
}
}
</script>
在showPosition使用警告我可以看到,在循环中的元素更新后,它才会被调用。
为什么一个函数的行为像这样,只有在循环执行完所有事情之后才能调用?
请缩进您的代码。这是非常难以阅读。 – 2013-05-08 16:13:58
看到“getLocation()”函数将非常有帮助。 – Pointy 2013-05-08 16:24:18
@VivinPaliath会接受这个建议谢谢。 – Dean 2013-05-08 16:37:49