0

ループの各反復を遅らせることを目的とした setTimeout 関数を含む for ループがあります。ループ内の残りのコードは適切に反復されますが、setTimeout 関数は、for ループがループ内にあり、その逆ではないかのように、1 回しか機能しません。これが私のコードです:

    for (x = 0; x <= roll; x ++) {
        setTimeout(function() {
            space = $(".player." + turn).parents("td").attr("id");
            space = parseInt(space);
            player = $(".player." + turn);
            $(".player." + turn).remove();
            nextSpace = space + 1;
            $("#" + nextSpace).append(player);
        }, 500);
    }

何か案は?

4

2 に答える 2

4

これを試して:

setTimeout(function() {
    // your code
}, 500 * x);
于 2013-03-10T07:41:18.417 に答える
1

これは、setTimeoutの動作方法ではありません。同期遅延ではありません。ループの各反復を遅らせたい場合は、代わりに内部関数を再帰的に呼び出すことによってこれを行う必要があります。

function inner_function(x, max_x) {
    space = $(".player." + turn).parents("td").attr("id");
    space = parseInt(space);
    player = $(".player." + turn);
    $(".player." + turn).remove();
    nextSpace = space + 1;
    $("#" + nextSpace).append(player);

    setTimeout(inner_function, 500, x+1, max_x);
}

inner_function(0, 500);
于 2013-03-10T07:45:54.933 に答える