我在数据库中保存了三个地址,我将其输出并使用jQuery检索值。但是,控制台仅显示第三个具有经度和纬度的字段。
我试图使用while函数来获取三个地址,并使用console.log(i)
显示i
的值,但是它仅显示第三个地址。
PHP:
<?php $count = 0?>
<?php foreach($get_address as $get) {?>
<?php $count += 1;?>
<input type="text" id="address_<?=$count?>" value="<?=$get->address?>">
<input type="text" id="latitude_<?=$count?>">
<input type="text" id="longitude_<?=$count?>"><br>
<?php } ?>
<input type="hidden" id="count_address" value="<?=$count_address->count_address?>"><br>
JavaScript:
function getCoor(){
var count = 3;
var i = 1;
while(true){
var geocoder = new google.maps.Geocoder();
var address = $("#address_"+i).val();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
$("#latitude_"+i).val(latitude);
$("#longitude_"+i).val(longitude);
console.log(i);
}
});
if(count == i){
break;
}
i += 1;
}
}
答案 0 :(得分:0)
这是因为geocoder.geocode是异步调用。
详细了解let here
请参阅here您面临的问题。
尝试下面的代码。
function getCoor(){
let count = 3;
for (let i = 1; i < count; i++) {
let geocoder = new google.maps.Geocoder();
let address = $("#address_"+i).val();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
let latitude = results[0].geometry.location.lat();
let longitude = results[0].geometry.location.lng();
$("#latitude_"+i).val(latitude);
$("#longitude_"+i).val(longitude);
console.log(i);
}
});
}
}