Google事件监听器:未捕获的TypeError:无法读取null的属性“addEventListener”

时间:2016-04-16 07:26:53

标签: javascript jquery google-maps google-maps-api-3

之前我已经问过这个问题,关于addListenerOnce中的addListener不起作用,答案是我试图在我正在寻找的元素被渲染之前添加点击监听器。问题是我无法理解为什么它适用于前两个事件。该事件来自图例的点击事件。前两个事件将一起出现。这就像听众只工作了1次。我已经尝试使用addListenerOnce并且事件也是空闲的(比如第一个图例),用于调用第二个图例级别的事件,但它根本不起作用。

例如,我单击Faculty图例然后单击fpa和fskm,它工作得很精彩但是当我单击Sex或Level of Education然后单击它们各自的第二个图例时出现Uncaught TypeError的错误:无法读取属性'addEventListener'的null出来了。我甚至尝试过DOMContentLoaded,仍然无法正常工作。我到底该怎么做?下面是代码,警报只是为了测试。

// Facebook logout
            LoginManager.getInstance().logOut();

1 个答案:

答案 0 :(得分:0)

这意味着您的值为空 - 您没有正确引用您尝试添加事件侦听器的任何内容。

我假设当你提到教育水平时,你指的是:

var degree = document.getElementById("degreeD");

如果是,degreeD不存在。也许你的HTML中有错误的名称。

**根据评论更新了答案**

由于该元素是动态添加的 - 当代码运行时,该元素不存在,这意味着对它的引用正如您所发现的那样null

有两种方法可以解决这个问题。

1)将您的degreeD事件监听器移到

google.maps.event.addDomListener(levelOpt, 'click', function() {

阻止,以便degreeD存在。

另一种选择是使用事件委派来为可能尚不存在的元素注册事件。我不太了解google.maps API,知道它们是否支持事件委派,或者您是否必须手动处理。