Arbeit mit der Google-Orte API zu bekommen und kann nicht verstehen, warum Autocomplete undefined hier auf Abruf zurückgibt, um Plätze zu erhalten. was Entwickler-Tools zeigt ist. address_components ist, was auf einen Anruf zurückgegeben werden sollte leider nicht möglich, autocomplete.getPlace Eigenschaft ‚address_components‘ undefinierter oder NULL-VerweisOrte api Nicht möglich Eigenschaft 'address_components' von undefined oder null Referenz
function initAutoCompleteDynamic() {
var slideID = 99;
var idx = 99 - slideID;
var propcount = 5;
for (var i = 0; i < propcount; i++) {
var propaddress = "prop1address" + i;
var autocomplete = autocomplete + i;
autocomplete = new google.maps.places.Autocomplete(
document.getElementById(propaddress)),
{ types: ['geocode'] };
autocomplete.addListener('place_changed', fillinAddressDynamic);
}
}
und in fillinAddressDynamic
var place=autocomplete.getPlace():
for (var i = 0; i < place.address_components.length; i++) {
alert("i am in the loop");
var addressType = place.address_components[i].types[0];
var field = addressType;
var completeaddress1 = '';
var propaddress = 'prop1address' + i;
var strnum = 'streetnumber' + i;
CR(i);//calling component resolver.
if (componentFormProduction[addressType]) {
var val = place.address_components[i][componentFormProduction[addressType]];
document.getElementById(CR[addressType]).value = val;
if (field == "street_number") {
var streetnum = document.getElementById(strnum).value = val;
}
if (field == "route") {
if (streetnum) {
completeaddress1 = streetnum + ' ' + val;
}
else {
completeaddress1 = val;
}
document.getElementById('prop1address0').value = completeaddress1;
}
}
}
Nein es ist nicht wegen der Auswahl einer Adresse, ich glaube, es liegt an der asynchronen Natur des Aufrufs, das ist dynamisch geladene Daten von Google API, ich denke, die Lösung wäre, ein benutzerdefiniertes verzögertes Objekt zu verwenden, Es scheint ein Zeitfehler zu sein, manchmal funktioniert es manchmal, wenn es nicht verzögert wird, sollte es behoben werden/es lange genug warten lassen, um es abzuschließen. – webdev8183