未捕获的RangeError:超出了最大调用堆栈大小,JavaScript [英] Uncaught RangeError: Maximum call stack size exceeded, JavaScript

查看:101
本文介绍了未捕获的RangeError:超出了最大调用堆栈大小,JavaScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了问题

    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
    }

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

What I'm doing wrong? Without this click event listener everything is working well. And what is the third parameter doing (true|false)? Thank you.

推荐答案

你正在调用关闭函数code> addEventListener 和 removeEventListener 当您尝试传递时作为参数(导致无限循环)。相反,您应该简单地将引用传递给函数,如下所示:

You are calling the close function in the addEventListener and removeEventListener when you are trying to pass is as an argument (causing an infinite loop). Instead you should simply pass the reference to the function as follows:

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

并且:

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

这篇关于未捕获的RangeError:超出了最大调用堆栈大小,JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆