未捕获范围错误:超过最大调用堆栈大小,JavaScript
我有个问题未捕获范围错误:超过最大调用堆栈大小,JavaScript,javascript,addeventlistener,Javascript,Addeventlistener,我有个问题 open: function($type) { //Some code document.getElementById($type).addEventListener("click", l.close($type), false); }, close: function($type) { //There is some code too document.getElementB
open: function($type) {
//Some code
document.getElementById($type).addEventListener("click", l.close($type), false);
},
close: function($type) {
//There is some code too
document.getElementById($type).removeEventListener("click", l.close($type), false);
//^ Recursion & Uncaught RangeError: Maximum call stack size exceeded
}
我做错了什么?没有这个点击事件监听器,一切都很好。第三个参数在做什么(真|假)?谢谢。您正在调用
addEventListener
和removeEventListener
中的close
函数,当您尝试将is作为参数传递时(导致无限循环)。相反,您只需将引用传递给函数,如下所示:
document.getElementById($type).addEventListener("click", l.close, false);
以及:
或者您可能有两个同名的Javascript函数。第三个参数标记您是否希望事件侦听器在添加时使用事件捕获(与冒泡相反),以及在删除时是否使用事件捕获。谢谢。)但是第三个参数在做什么?@Krylovech它定义了在捕获或冒泡阶段是否应该执行处理程序:
document.getElementById($type).removeEventListener("click", l.close, false);