web-dev-qa-db-ja.com

Uncaught 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
    }

私が間違っているのは何ですか?このクリックイベントリスナーがなければ、すべてがうまく機能しています。そして、3番目のパラメーターは何をしていますか(true | false)?ありがとうございました。

8
anony_root

Isを引数として渡そうとしているときにcloseおよびaddEventListenerremoveEventListener関数を呼び出しています(無限ループが発生します)。代わりに、次のように関数への参照を渡すだけです。

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

そして:

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

または、同じ名前の2つのJavascript関数がある場合があります。

0
Khizer Jalal