【问题标题】:Uncaught RangeError: Maximum call stack size exceeded, JavaScript未捕获的 RangeError:超出最大调用堆栈大小,JavaScript
【发布时间】:2012-03-18 20:37:35
【问题描述】:

我有问题

    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
    }

我做错了什么?如果没有这个 click 事件监听器,一切都运行良好。第三个参数在做什么(true|false)?谢谢。

【问题讨论】:

标签: javascript addeventlistener


【解决方案1】:

当您尝试将 is 作为参数传递时,您正在 addEventListenerremoveEventListener 中调用 close 函数(导致无限循环)。相反,您应该简单地将引用传递给函数,如下所示:

document.getElementById($type).addEventListener("click", l.close, false);

还有:

document.getElementById($type).removeEventListener("click", l.close, false);

【讨论】:

【解决方案2】:

或者您可能有两个同名的 Javascript 函数。

【讨论】:

    猜你喜欢
    • 2018-01-24
    • 2014-08-01
    • 1970-01-01
    • 2015-10-28
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多