2

我有这个 jQuery 函数,可以在 ID 范围从 status_0 到 status_5 的不同状态消息(p 元素)之间切换:

setTimeout(function() {
    var next_status;

    if (current_status < 5) {
        next_status = current_status++;
    } else {
        next_status = 0;
    }

    $(".status_visible").fadeOut("fast", function() {
        $("#status_"+next_status).fadeIn("fast");
    });

    //alert(next_status);

    change_status();
}, 10000);

我的问题是,一开始current_status绝对等于 0,但是当它到达我的增量部分时,它仍然是 0!我用一个简单的 01 尝试了这个next_status = current_status + 1,它返回 01 而不是 1 (连接它们),所以我尝试next_status = current_status++了它仍然返回 0 。

有人可以把我直接放在这里吗:)

4

3 回答 3

13
next_status = ++ current_status;
于 2012-07-16T02:51:18.747 回答
1

该表达式的current_status++意思是“增加 current_status,并计算出 current_status 的旧值”,即使用 current_status,然后在记下它的值后增加它。

您想要 ,++current_status这意味着“增加 current_status,并评估为新值”。

于 2012-07-16T02:53:23.737 回答
-1

您的超时方法“setTimeout”会被多次调用吗?如果是这样,您需要将您的计数器作为具有全局范围的参数传递,否则每次都会重置。

于 2012-07-16T02:50:02.943 回答