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相同。