как решить проблему Uncaught RangeError: максимальный размер стека вызовов превышен в jquery
Привет всем, у меня есть метод щелчка ячейки сетки, реализованный с помощью jquery следующим образом
function usercellclick() { $("#<%=dgv_buslayout.ClientID%> tr:has(td)").click(function (e) { var selTD = $(e.target).closest("td"); var $target = $(e.target); if (!$target.is('input:checkbox')) { $($target).find('input:checkbox').each(function () { if (!$(this).prop('disabled')) { if (this.checked) { this.checked = false; getseats(); } else { this.checked = true; getseats(); } } }) } }); }); function getseats() { seatCheckUncheck(document.getElementById("<%= txtselectedseats.ClientID %>"), document.getElementById("<%=txtseatcount.ClientID %>")); OnSuccess(); } function OnSuccess() { var seatsCount = document.getElementById("<%= txtseatcount.ClientID %>").value; if (seatsCount == 0) { var row = $("[id*=dgv_passengerdetails] tr:last").clone(true); $("[id*=dgv_passengerdetails] tr").not($("[id*=dgv_passengerdetails] tr:first-child")).remove(); $("td", row).eq(0).html(''); $("[id*=dgv_passengerdetails]").append(row); } else{ var row = $("[id*=dgv_passengerdetails] tr:last").clone(true); $("[id*=dgv_passengerdetails] tr").not($("[id*=dgv_passengerdetails] tr:first-child")).remove(); var seats = (document.getElementById("<%= txtselectedseats.ClientID %>").value).split(","); for (var count = 0; count < seatsCount; count++) { $("td", row).eq(0).html(seats[count]); $("[id*=dgv_passengerdetails]").append(row); row = $("[id*=dgv_passengerdetails] tr:last").clone(true); } } }
когда я нажимаю кнопку Продолжить 6 7 раз он выдает исключение при превышении максимального размера стека вызовов
если я удалю другую часть функции OnSuccess (), то она будет работать нормально. помогите мне, спасибо заранее
Kornfeld Eliyahu Peter
Ошибка связана с рекурсивными вызовами. Вы заполняете очередь. Однако неясно, где именно находится рекурсия, поэтому вам придется отлаживать, чтобы увидеть...
[no name]
отладочное шоу в jquery.min.js файл
Kornfeld Eliyahu Peter
Конечно, неудача все-таки в jQuery...но вы должны понимать, где в вашем коде находится рекурсия!
[no name]
когда я удаляю часть else из OnSuccess (), код не создает исключения. но там может не быть никакой строки, которая вызывает рекурсию
Lord Perez
В вашем предложении else у вас есть цикл for. Попробуйте напечатать переменные count и seatsCount, чтобы увидеть, выходите ли вы когда-нибудь из цикла. :3