25

以下代码(请参阅此处的 Fiddle)引发问题标题中提到的堆栈溢出。我试图让一个盒子阴影以脉冲效果显示在圆形图像周围。任何人都可以指出递归吗?我是一个 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();
};
4

2 回答 2

40

您的调用是递归进行的,它将函数无限地推入堆栈,从而由于递归行为导致最大调用堆栈超出错误。而是尝试使用 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();
于 2013-05-22T14:25:50.547 回答
3

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

于 2016-02-09T21:13:15.640 回答