我定义了名为“delka”和“sirka”的变量,我想在下面的函数中更改它们的值。显然,我做错了,因为当函数结束时,那些变量不受它的影响。为什么?谢谢答案。
var sirka;
var delka;
var mestoNaLL = document.getElementById("mesto").value;
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { "address": mestoNaLL }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
sirka = results[0].geometry.location.lat();
delka = results[0].geometry.location.lng();
} else {
alert("Chyba: " + status);
}
});
//undefined, why?
alert(mestoNaLL + " " + sirka + " " + delka + " ");
修改
这是同样的问题,对吧?
//works fine
alert(markers[index].title + " " + infoWindows[index].content);
markers[index].addListener("click", function() {
//error - undefined
alert(markers[index].title + " " + infoWindows[index].content);
infoWindows[index].open(map, markers[index]);
map.setZoom(14);
map.setCenter(markers[index].getPosition());
});
答案 0 :(得分:0)
以下代码为asynchronous code。这意味着,它不会像其他人一样执行。在执行该代码之前,将执行警报,从而为您提供未定义的。
$this->db->insert('wifi_regs', $data);
if ($this->db->affected_rows() == 1)
return true;
return false;
解决方案是取geocoder.geocode( { "address": mestoNaLL }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
sirka = results[0].geometry.location.lat();
delka = results[0].geometry.location.lng();
} else {
alert("Chyba: " + status);
}
});
内的alert
:
OK