Javascript对象未被识别为addEventListener的DOM对象

Javascript对象未被识别为addEventListener的DOM对象,javascript,dom,addeventlistener,Javascript,Dom,Addeventlistener,我正试图弄明白为什么这个代码不起作用。我阅读了DOM和添加事件监听器的相关内容,并且了解到事件监听器只能添加到DOM的对象中。从技术上讲_get_元素的返回值应该是一个DOM对象,但它仍然不起作用。如果有人知道为什么这不起作用,或者告诉我一个可以解释如何做的资源,我们将不胜感激 window.onload = funtion() { // works document.getElementByID('element_id').addEventListener('click', _

我正试图弄明白为什么这个代码不起作用。我阅读了DOM和添加事件监听器的相关内容,并且了解到事件监听器只能添加到DOM的对象中。从技术上讲_get_元素的返回值应该是一个DOM对象,但它仍然不起作用。如果有人知道为什么这不起作用,或者告诉我一个可以解释如何做的资源,我们将不胜感激

window.onload = funtion()
{
    // works
    document.getElementByID('element_id').addEventListener('click', _fn(), false); 

    var exfnvar = new exfn();
    // doesn't work
    exfnvar.exel.addEventListener('click', _fn(), false);
    // also doesn't work 
    exfnvar._get_elem().addEventListener('click', _fn(), false);
};

var exfn = function()
{
    this.exel = document.getElementByID('element_id');
    this._get_elem = function()
    {
        return document.getElementByID('element_id');
    }
};

function _fn()
{
    // do something.
};

您正在调用该函数并将返回值作为对事件侦听器的回调。相反,您必须将该函数作为回调函数

改变

document.getElementByID('element_id')。addEventListener('click','u fn(),false)


与其他Listner相同。

您正在调用该函数并将返回值作为对事件侦听器的回调。相反,您必须将该函数作为回调函数

改变

document.getElementByID('element_id')。addEventListener('click','u fn(),false)


与其他Listener相同。

如果您编写
.addEventListener('click',_fn(),fale)
则在这一行中执行
\u fn
,并将结果(返回值)添加为事件回调


您省略了
\u fn
的函数体,但假设它不返回另一个应该使用的函数。addEventListener('click','u fn,false)
-这样,对
\u fn
的引用被添加为侦听器,而不是其执行的结果。

如果您编写
。addEventListener('click','u fn(),fale)
在这一行执行
\fn
,结果(返回值)被添加为事件回调


您省略了
\u fn
的函数体,但假设它不返回另一个函数,您应该使用
。addEventListener('click',\u fn,false)
-通过这种方式,对
\u fn
的引用被添加为侦听器,而不是其执行的结果。

经过一些更改后,它对我来说运行良好。需要注意的一点是资本化:

getElementById
vs


另外,当您将函数作为回调传递时,不希望包含括号。您只希望在执行该函数时包含它

在做了一些改变后,它对我很好。需要注意的一点是资本化:

getElementById
vs


另外,当您将函数作为回调传递时,不希望包含括号。您只希望在执行该函数时包含它

这个。浏览器将根据需要调用您的函数,这是事件处理程序的要点。您只需要传入引用。您传入了处理程序的返回值,我怀疑它是未定义的,因为没有太多理由在事件处理程序中放入return语句。我不敢相信这么小的疏忽会导致所有操作失败。奇怪的是,我以前没有(),但它仍然不起作用,那一定是别的原因。谢谢你指出我的错误!这浏览器将根据需要调用您的函数,这是事件处理程序的要点。您只需要传入引用。您传入了处理程序的返回值,我怀疑它是未定义的,因为没有太多理由在事件处理程序中放入return语句。我不敢相信这么小的疏忽会导致所有操作失败。奇怪的是,我以前没有(),但它仍然不起作用,那一定是别的原因。谢谢你指出我的错误!谢谢你的帮助@对不起,plbsam比你快了2分钟。谢谢你的帮助@对不起,plbsam比你领先了2分钟。
getElementByID