Jquery 递归错误太多

Jquery 递归错误太多,jquery,recursion,Jquery,Recursion,我正在一个接一个地展示图片。。但它一次显示两个图像。。。为什么会有这种奇怪的行为 <div Id="BannerDiv"> <img src="images/CIOT flash/im_01.png" alt="image1"/> <img src="images/CIOT flash/im_02.png" alt="image2"/> <img src="images/CIOT flash/im_03.png" alt="image3"/&

我正在一个接一个地展示图片。。但它一次显示两个图像。。。为什么会有这种奇怪的行为

<div Id="BannerDiv">
  <img src="images/CIOT flash/im_01.png" alt="image1"/>
  <img src="images/CIOT flash/im_02.png" alt="image2"/>
  <img src="images/CIOT flash/im_03.png" alt="image3"/>
  <img src="images/CIOT flash/im_04.png" alt="image4"/>
  <img src="images/CIOT flash/im_05.png" alt="image5"/>
</div>

<script type="text/javascript">
  jQuery.noConflict();
  jQuery(function() {
    jQuery('#BannerDiv > :first').show();
    setTimeout(rotate,1000);
  });

  function rotate() {
    var c = jQuery('#BannerDiv > :visible').css({ 'z-index': 2 }).fadeOut(2000, function() {
      setTimeout(rotate, 1000);
    }).next().css({ 'z-index': 1 }).show();
    if (c.length == 0) jQuery('#BannerDiv > :first').css({ 'z-index': 1 }).show();
  }
</script>

jQuery.noConflict();
jQuery(函数(){
jQuery('#BannerDiv>:first').show();
设置超时(旋转,1000);
});
函数rotate(){
var c=jQuery('#BannerDiv>:visible').css({'z-index':2}).fadeOut(2000,function(){
设置超时(旋转,1000);
}).next().css({'z-index':1}).show();
if(c.length==0)jQuery('#BannerDiv>:first').css({'z-index':1}).show();
}

嘿,伙计们,我遇到了一个非常严重的问题,就是“递归太多,堆栈溢出错误”太多地执行图像循环检查

它被称为函数实例化或闭包、返回值等可以修复它

如果你去这个git回购

然后转到image\u cycles文件夹,html dreimage\u cycler.html将包含有效的代码:)


大家好,请尝试使用setTimeout(函数(){rotate();},1000);我没有检查旋转函数,但请使用代码示例标记(图标101 010)和换行符,以便更清楚地识别问题;)迈克尔-你建议的代码正是same@redsquare:几乎相同,但首选此格式,因为它不会调用“eval”,允许更复杂的逻辑并授予一些漂亮的关闭操作。@Michael:如果他要执行
setTimeout(“rotate()”,1000)
,然后将使用
eval()
,但这两个代码段都将函数作为引用传递,因此不使用eval。@Michael在争论之前,你应该先学习Javascript。设置超时(旋转,1000);不会调用eval。旋转是通过引用传递的,就像解决方案的匿名函数一样。