Подтвердить что ты не робот

JQuery - Uncaught RangeError: превышен максимальный размер стека вызовов

Следующий код (см. Fiddle here) выдает переполнение стека, указанное в заголовке вопроса. Я пытаюсь получить тень окна, чтобы отображать вокруг кругового изображения в импульсном эффекте. Может ли кто-нибудь указать на рекурсию, пожалуйста? Я очень новичок в Javascript и не вижу его. Спасибо.

HTML

<div id="pulseDiv"> 
      <a href="#" id="advisers-css-image">
           <div id="advisersDiv"><img src="http://ubuntuone.com/1djVfYlV62ORxB8gSSA4R4"></div>
      </a>
</div>

CSS

.pulse { box-shadow: 0px 0px 4px 4px #AEA79F; }

Javascript

function fadeIn() {
   $('#pulseDiv').find('div.advisersDiv').delay(400).addClass("pulse");
   fadeOut();
};

function fadeOut() {
   $('#pulseDiv').find('div.advisersDiv').delay(400).removeClass("pulse");
   fadeIn();
};
4b9b3361

Ответ 1

Ваши вызовы выполняются рекурсивно, что бесконечно толкает функции в стек, что приводит к превышению максимального количества стека вызовов из-за рекурсивного поведения. Вместо этого попробуйте использовать setTimeout, который является обратным вызовом.

Также на основе вашей разметки ваш селектор ошибочен. это должно быть #advisersDiv

Демо

function fadeIn() {
    $('#pulseDiv').find('div#advisersDiv').delay(400).addClass("pulse");
    setTimeout(fadeOut,1); //<-- Provide any delay here
};

function fadeOut() {
    $('#pulseDiv').find('div#advisersDiv').delay(400).removeClass("pulse");
    setTimeout(fadeIn,1);//<-- Provide any delay here
};
fadeIn();

Ответ 2

функция fadeIn() вызывает функцию fadeOut(), которая снова вызывает функцию fadeIn(). рекурсия находится в JS.