Jquery太多的递归错误

我希望有人可以帮助我。

我有这个代码:

 $(document).ready(function() { spectrum(); function spectrum(){ $('#bottom-menu ul li.colored a').animate( { color: '#E7294F' }, 16000); spectrum2(); } function spectrum2(){ $('#bottom-menu ul li.colored a').animate( { color: '#3D423C' }, 16000); spectrum(); } });  

它正在工作但是当我看到firebug它说有太多的递归错误。

我希望有人能告诉我原因。

谢谢!

问题是您的脚本永远不会停止执行。

当页面加载时,您告诉它运行函数spectrum() 。 它运行此函数,然后被告知运行它所执行的函数spectrum2() 。 当它完成spectrum2() ,你告诉它再次运行spectrum() ,当它完成时它必须再次运行spectrum2() ..看模式? 你的糟糕脚本永远不会一遍又一遍地执行这两个function!

函数调用自身的过程(或两个函数重复调用其他函数)称为递归 ,但通常递归最终会以某种方式终止。 你的永远不会终止,所以FireBug说“等一下,这个剧本永远不会结束,我最好抛出一个错误!”

这可能不是你想要实现的,修复很可能很简单。 如果您可以尝试解释您想要实现的目标,也许我们可以帮助您编写正确的代码?

你有一个明确无休止的递归。 specturm()调用spectrum2(),然后调用spectrum(); 你没有条件终止。 您需要添加一个条件来终止该递归。 也许你想要实现以下目标。 如果您让我们知道您要实现的目标,那么您将获得解决方案。

  

使用setTimeout从堆栈中删除调用函数:

 function spectrum(){ $('#bottom-menu ul li.colored a').animate( { color: '#E7294F' }, 16000); setTimeout(function() {spectrum2();},100); } 

这样,当你启动spectrum2时,频谱有机会完成。 与spectrum2相同。