jQuery – 未捕获RangeError:超出最大调用堆栈大小

以下代码(请参阅此处的小提琴 )抛出问题标题中引用的堆栈溢出。 我试图在脉冲效果中以圆形图像显示一个框阴影。 有人能指出递归吗? 我是一个Javascript新手,无法看到它。 谢谢。

HTML

 

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(); }; 

您的调用是递归调用的,它会无限地将函数推送到堆栈,导致由于递归行为而导致最大调用堆栈超出错误。 而是尝试使用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(); 

你的fadeIn()函数调用fadeOut()函数,它再次调用fadeIn()函数。 递归在JS中。