未捕获的RangeError:超出了最大调用堆栈大小,JavaScript

ano*_*oot 8 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.getElementById($type).removeEventListener("click", l.close($type), false);
           //^ Recursion & Uncaught RangeError: Maximum call stack size exceeded
    }
Run Code Online (Sandbox Code Playgroud)

我做错了什么?没有这个点击事件监听器一切都运行良好.什么是第三个参数(true | false)?谢谢.

Lyc*_*cha 10

您呼叫的close在功能addEventListenerremoveEventListener当您试图传递是作为参数(导致一个无限循环).相反,您应该简单地将引用传递给函数,如下所示:

document.getElementById($type).addEventListener("click", l.close, false);
Run Code Online (Sandbox Code Playgroud)

和:

document.getElementById($type).removeEventListener("click", l.close, false);
Run Code Online (Sandbox Code Playgroud)