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