0

我有一个问题,如果按下一个键,如何保持/继续循环。我想用案例 1 / 案例 2 / 案例 3 和案例 4 为页面设置动画,但我想知道如果再次按下该键(并再次......)如何继续循环。我在这里读到了循环,但我就是想不通。

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

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;
        }
    };

});

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

4

1 回答 1

0

线条

            counter = 0;
            return;

位于 switch 语句中,但不在此处定义的任何特定案例中,这意味着它们永远不会被执行。这可以防止计数器重置,这就是停止动画的原因。

将它们break放在第四个案例的结尾之前,因此:

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

你应该看到它更像你所期望的那样工作。

于 2013-08-23T14:54:21.923 回答