定期重复一个功能

时间:2015-01-09 09:38:58

标签: javascript jquery

   setInterval(function(){

       setTimeout(function(){

           $('#a').addClass('x');

       },1000);

       setTimeout(function(){

           $('#a').removeClass('x');

       },2000);

   },4000);

我试图添加课程" x"到了#"#a" 1秒后& 2秒后删除课程&将整个函数重复为一个循环,每3秒执行一次。但循环只运行一次,因为setTimeout函数中的时间在3秒后没有增加。所以你可以帮我完成这个工作。

4 个答案:

答案 0 :(得分:1)

在setTimeout和setInterval方法中设置间隔时,语法不正确:

setInterval(function(){
   setTimeout(function(){
       $('#a').addClass('x');
   },1000);
   setTimeout(function(){
       $('#a').removeClass('x');
   },2000);
},4000);

答案 1 :(得分:1)

您必须在括号内写下时间段,并在下面的代码中进行更正。

setInterval(function(){
       setTimeout(function(){
           $('#a').addClass('x');
       },1000);
       setTimeout(function(){
           $('#a').removeClass('x');
       },2000);
   },4000);

<强> DEMO

答案 2 :(得分:1)

你的语法不正确。此外,这可以在没有超时的情况下完成,只是为了给你一个简短的想法:

setInterval(function(){
   $("#a").addClass("x").delay(1000).queue(function(next){
     $(this).removeClass("x");
     next();
   });
},6000);

See it in a fiddle

答案 3 :(得分:1)

我认为您想要将类x添加1秒并在另一秒后删除它。 您可以将间隔设置为1秒,并检查并删除元素是否有类,否则添加它。

下面的代码应该适合你的概率。如果需要保持循环计数,你可以加1秒的延迟。

setInterval( function(){
       if( $('#a').hasClass('x')){
            $('#a').removeClass('x');
        } else {
            $('#a').addClass('x');
        }
 },1000);