2013-08-23 38 views
0

我有一个问题,就是如果按下某个键时如何维护/继续循环。我想通过案例1 /案例2 /案例3和案例4对页面进行动画处理,但是我想知道如果再次按下按钮(以及再次...),如何继续循环。我在这里阅读有关循环,但我无法弄清楚。通过按键循环jquery(case:1; etc ..)

在此先感谢,这里是我的代码:

var counter = 0; 

$(document).bind('keydown', function(e) { 
    if(e.which == 37 || e.which == 39) { 
     counter++; 
     switch(counter) { 
      case 1: 
       $('#maikeximu,#dossier').stop() 
        .animate({ 
         height: "toggle", 
        }, 1200, function() { 
         $('html,body').animate({ 
          scrollTop: $("#maikeximu").next().offset().top 
         }, 1000); 
        }); 
       break; 
      case 2: 
       $("#gal,#dossier, #viz").stop() 
        .animate({ 
         height: "toggle", 
        }, 1200, function() { 
         $('html,body').animate({ 
          scrollTop: $("#gal").next().offset().top 
         }, 1000); 

        }); 
       break; 
      case 3: 
       $('#viz,#dossier').stop() 
        .animate({ 
         height: "toggle", 
        }, 1200, function() { 
         $('html,body').animate({ 
          scrollTop: $("#dossier").next().offset().top 
         }, 1000); 
        }); 
       break; 
      case 4: 
       $('#maikeximu, #gal,#dossier').stop() 
        .animate({ 
         height: "toggle", 
        }, 1200, function() { 
         $('html,body').animate({ 
          scrollTop: $("#maikeximu").offset().top 
         }, 0); 
        }); 
       break; 
       counter = 0; 
       return; 
     } 
    }; 

}); 

我希望更多地了解循环(一个大问题对我来说):)

+1

你的代码应该在4个按键之后继续开始。它在做什么呢? –

+0

它看起来就像是在案例4下设置了'counter = 0',所以每当你按下一个键时,它只会进入'case:1'。那是你正在经历的吗?大概你需要在突破'case:4'之前设置'counter = 0'? –

+0

@ adam-marshall它卡住了。我无法再按箭头键。我从我的JS文件中删除了所有其他函数,以检查是否与代码没有冲突。 编辑:谢谢。我可以去看最后一个案例(4),但之后就被卡住了。 我在最后一次休息之前移动了计数器= 0,它的作用就像一个魅力。 :) – Maikeximu

回答

0

线条

  counter = 0; 
      return; 

是在switch语句中,但不在那里定义的任何特定情况下,这意味着它们永远不会被执行。这可以防止计数器重置,这是停止动画的原因。

把它们放到break之前结束第四种情况,即:

   /* now they're here */ 
       counter = 0; 
       return; 
      break; 
      /* they were here */ 
    } 

,你应该看到它的工作更像你期待什么。