增量计数器Javascript / JQuery

时间:2013-02-03 12:00:43

标签: javascript jquery

我正在努力研究如何使这个计数器工作。播放了一定数量的动画后,我想刷新页面。我知道我的代码很糟糕。我没有接受过这方面的教育而且我很新,更不用说现在我很难集中注意力(至少可以说是这样)...所以要好好。这是:

$(document).ready(function () {
    function loop() {
        var p = 0;
        if (p = 3) {
            location.reload(true);
        } else {
            $("#p3").delay("1000").fadeIn("slow");
            $("#p3").delay("1000").fadeOut("slow", loop);
            p + 1;
        };
        loop();
    });

2 个答案:

答案 0 :(得分:2)

您的if (p = 3)语句使用的是分配运算符=,而不是比较运算符=====。因此,p被分配给3,其结果是真实的,因此永远不会执行else语句。

此外,p变量在loop()函数内声明,因此每次调用函数时都会重置 - 您可以将该声明移到函数之前(将其保留在文档中)处理程序:无需将其设为全局。)

p + 1;也没有做任何事情:它不会增加p,因为您需要将结果分配回p p = p + 1,简写为p += 1p++

最后,您发布的代码存在语法错误:您错过了}函数的结束loop()。我猜想目的是结束函数然后调用它,所以:

$(document).ready(function () {
    var p = 0;  // <--- moved outside function
    function loop() {
        if (p === 3) {   // <-- changed = to ===
            location.reload(true);
        } else {
            $("#p3").delay("1000").fadeIn("slow");
            $("#p3").delay("1000").fadeOut("slow", loop);
            p++; // <-- changed from p + 1
        };
    } // <--- this is the missing bracket
    loop();
});

答案 1 :(得分:1)

我已经做了一些假设,写下了我认为你想要的东西,代码没有经过测试。:

将其更改为:

$(document).ready(function () {
    var globalP = 0;
     //this is called when fadeOut completes.
    function fadeComplete() {
       if (globalP == 3) {//if it is 3 reload..
            location.reload(true);
        } else {
            globalP++;//increment counter 
            animate();//start animation again...
        }
    }
    function animate() {
       //start fading in...
       $("#p3").delay("1000").fadeIn("slow", function() {
           //start fading out when the fadeIn completes.
            //should this happen? Since you're fading in the SAME element.
          $("#p3").delay("1000").fadeOut("slow", fadeComplete);
       });
    };
    animate();
});