2015-11-04 77 views
0

我想循环我的功能,但是当我用它setInterval它保持循环i3-CTA,而不是整个功能。javascript/jquery循环函数

window.onload = function start() { 
    loop(); 
} 

function loop(){ 
    setInterval(function(){ 
     $("#i3-content").delay(6500).fadeOut(function(){ 
      if ($('#i3-content').is(':hidden')) { 
       $('#i3-CTA').fadeIn(); 
       $("#i3-CTA").delay(6000).fadeOut(function(){ 
        if ($('#i3-CTA').is(':hidden')) { 
        $("#i3-content").fadeIn(); 
        } 
       });  
      } 
     }); 
    }); 
} 

我对此还是一个新东西,但希望有人能帮助,谢谢。

+2

关系不大,但你没有通过'setInterval's'持续时间参数,那么你就延迟功能6.5s,再次6S,所以它可能已经在6.5s和12.5s之后执行了,你能详细说明一下吗?它会一直循环使用i3-CTA * – vinayakj

+0

你是什么意思'它保持循环i3-CTA而不是整个函数?没有'i3-CTA' – Justinas

+0

这样的功能啊你的权利就是问题我删除了6.5秒,并将它添加到了setInterval中,但是我怎样才能确保我的i3-CTA持续显示6秒?因为延迟只会把事情搞砸。 – DTH

回答

1

window.onload = function start() { 
 
    setInterval(loop(), 6500) 
 
} 
 

 
function loop(){ 
 
     debugger; 
 
     $("#i3-content").fadeOut(function(){ 
 
      if ($('#i3-content').is(':hidden')) { 
 
       $('#i3-CTA').fadeIn(); 
 
       $("#i3-CTA").delay(6000).fadeToggle(function(){ 
 
        if ($('#i3-CTA').is(':hidden')) { 
 
        $("#i3-content").fadeToggle(); 
 
        } 
 
       });  
 
      } 
 
     }); 
 
    
 
}
#i3-content{ 
 
height:20px; 
 
    background:red; 
 
} 
 
#i3-CTA{ 
 
height:20px; 
 
    background:green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='i3-content'></div> 
 
<div id='i3-CTA'></div>

+0

现在它需要回到绿色,所以它保持循环 – DTH

+0

好吧,让我这样做。 – Mitul

+0

完成请检查。 – Mitul

0

如果我们如下修改代码,这将是更有意义:

window.onload = function start() { 
    doSomeJob(); 
} 

function doSomeJob(){ 
    console.log("first line of func") 
    setInterval(function(){ 
     console.log("inside of setInterval") 
     }); 
    }, 1000); 
    console.log("last line of func") 
} 

那么结果会是这样的:

FUNC
的setInterval的内部FUNC
最后一行的第一线
的setInterval
内的setInterval
内的setInterval内 ....

混淆来自您的函数名称循环。 的setInterval给你循环不调用窗口加载功能