无法获取未定义或空引用javascript的属性

无法获取未定义或空引用javascript的属性,javascript,events,Javascript,Events,当我从initialize函数启动函数时,我收到了消息 “无法获取未定义或空引用的属性“address\u components” 我首先添加一个侦听器 google.maps.event.addDomListener(window, 'load', initialize); 这是我的初始化函数 function initialize() { document.getElementById('autocomplete').value = city()+','+countryName(

当我从initialize函数启动函数时,我收到了消息

“无法获取未定义或空引用的属性“address\u components”

我首先添加一个侦听器

google.maps.event.addDomListener(window, 'load', initialize);
这是我的初始化函数

function initialize() {
   document.getElementById('autocomplete').value =   city()+','+countryName();  
   autocomplete = new google.maps.places.Autocomplete(
    /** @type {HTMLInputElement} */(document.getElementById('autocomplete')),
                                   {types: ['establishment','geocode']});

    fillInAddress();  --> this call does not work

    google.maps.event.addListener(autocomplete, 'place_changed', function() {
                    fillInAddress();  --> this call work when I change manually the value                   in                      the     field
                });
}
当上述侦听器触发以下被调用函数时,该函数将工作(place\u已更改)

函数fillinAddress()
var place=autocomplete.getPlace();
控制台。日志(位置);-->这将在从initialize函数调用时提供未定义的值
对于(var i=0;i这会产生错误
//无法获取未定义或空引用的属性“address\u components”

有什么帮助吗?

您需要将自动完成传递给以下函数

function initialize() {fillinAddress(autocomplete)}
function fillinAddress(autocomplete){console.log(autocomplete);}

步骤1:在浏览器中内置的调试器中逐步查看代码,以查看哪个对象是
null
undefined
。我们不能仅仅猜测它是哪一个(尽管可能性似乎很高,这可能是
getElementById
调用的结果)。错误消息应该指向相关行,因此不难理解。@t.J.Crowder当我在自动完成列表中选择时,无论我选择什么,它都会工作。当我按函数设置值时,如本例所示,它不工作。当我控制台.log(自动完成)时,是整个对象被认为是未定义的。仍然是相同的消息。当您调用autocomplete=new google.maps.places.autocomplete时,可能不会返回某些结果,因此autcomplete=null或undefined感谢您的帮助。我认为当我通过函数设置默认值时,谷歌函数不起作用。
function initialize() {fillinAddress(autocomplete)}
function fillinAddress(autocomplete){console.log(autocomplete);}