触发后Javascript事件侦听器是否被销毁(默认情况下)?

时间:2017-02-15 04:13:45

标签: javascript object javascript-events event-listener

我在一个对象上有一个事件监听器,它在对象发生变化时触发一个函数。

这是代码:

window.parent.document.getElementById('campval').addEventListener("change", getscriptbuttons1());

这在第一次更改对象时非常有效,但是所有连续更改都不会触发事件侦听器。

这是Javascript的正常行为吗?我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

不,每次都会触发事件监听器。

我认为这个错误是因为您正在调用该函数而不是将其作为参数传递:

getscriptbuttons1 // passes the function
getscriptbuttons1() // calls the function and passes whatever it returns
你的意思是? :

window.parent.document.getElementById('campval').addEventListener("change", getscriptbuttons1);

答案 1 :(得分:1)

不,他们不会被摧毁。您必须手动删除它们。问题是您实际上是在事件侦听器中调用该函数。你需要改变它:(没有parens,不要叫它)

window.parent.document.getElementById('campval').addEventListener("change", getscriptbuttons1);