Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未捕获范围错误:超过最大调用堆栈大小,JavaScript_Javascript_Addeventlistener - Fatal编程技术网

未捕获范围错误:超过最大调用堆栈大小,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);