Chrome 中未捕获的 RangeError:超出最大调用堆栈大小
2015-12-21
520
我一直收到来自 JavaScript 的此错误。每次我选中/取消选中 ckhDirectDebit 复选框时都会发生这种情况。
这是代码:
<script type="text/javascript">
$(document).ready(function () {
var isDirectDebitSelected = $('#<%=chkDirectDebit.ClientID%>');
var sameAsMerchantBankCheckbox = $('#<%=chkSameAsMerchantBank.ClientID%>');
var sameAsMerchantBankLabel = $('#<%=txtSameAsMerchantBank.ClientID%>');
function setSameAsMerchantVisible() {
if (isDirectDebitSelected.is(':checked')) {
sameAsMerchantBankCheckbox.show();
sameAsMerchantBankLabel.show();
} else {
sameAsMerchantBankCheckbox.hide();
sameAsMerchantBankLabel.hide();
}
isDirectDebitSelected.bind('change', function () {
setSameAsMerchantVisible();
});
setSameAsMerchantVisible();
}
});
</script>
<asp:CheckBox runat="server" ID="chkDirectDebit" />
<asp:Label runat="server" AssociatedControlID="chkSameAsMerchantBank" ID="txtDirectDebit" meta:resourcekey="lblDirectDebit"></asp:Label>
<asp:CheckBox runat="server" ID="chkSameAsMerchantBank" OnCheckedChanged="chkSameAsMerchantBank_CheckedChanged" AutoPostBack="True" Checked="True" />
<asp:Label runat="server" AssociatedControlID="txtSameAsMerchantBank" ID="txtSameAsMerchantBank" meta:resourcekey="lblSameAsMerchantBank"></asp:Label>
有人知道我在 js 中做错了什么吗?导致此异常的潜在问题是什么?
3个回答
您有无限递归,因为
setSameAsMerchantVisible
内部再次调用了
setSameAsMerchantVisible
,且没有任何条件。
似乎您打错了,应该将右括号稍微向上移动一点
function setSameAsMerchantVisible() {
if (isDirectDebitSelected.is(':checked')) {
sameAsMerchantBankCheckbox.show();
sameAsMerchantBankLabel.show();
} else {
sameAsMerchantBankCheckbox.hide();
sameAsMerchantBankLabel.hide();
}
} // <-- to here
isDirectDebitSelected.bind('change', function () {
setSameAsMerchantVisible();
});
setSameAsMerchantVisible();
//} from here
Grundy
2015-12-21
这种情况可能在程序陷入无限循环时发生。
您正在递归调用函数
setSameAsMerchantVisible()
Nishad K Ahamed
2015-12-21
发生这种情况是因为您的代码由于递归调用而陷入无限循环,如下所示 -
function setSameAsMerchantVisible() {
// other code
setSameAsMerchantVisible();
}
由于递归调用导致堆栈溢出。
DfrDkn
2015-12-21