2

このコードを使用して CSS3 ajax ローダーを作成しました。id は ajaxloader の場所です。このコードは正常に動作し、ローダーは適切に機能しますが、関数が 2 回呼び出されると、タイムアウトが変数に割り当てられているため、タイムアウトが互いに打ち消し合います。どうにかして、そうならないようにしたい。これが私が使用しているjavascriptです

function ajaxloader(id) {
    var i = $("#" + id + " .ajaxpieces").length;
    var s = $("#" + id + " .ajaxpieces").filter(function() {
        return ($(this).css('background-color') == "rgb(0, 128, 0)");
    }).next();

    if (s.length < 1) {
        s = $("#" + id + " .ajaxpieces").first();
    }
    s.css('backgroundColor','green').siblings().css('backgroundColor','grey');
    ajax_ii = setTimeout(function(){ajaxloader(id);},550);
}

function killloader() {
    clearTimeout(ajax_ii);
}
4

1 に答える 1

5

すべての変数はウィンドウのオブジェクトであるため、次の方法で実行できます。

            window['a_time'+new Date().getTime()] = setTimeout(function(){
                ajaxloader(id);
            },550);
于 2013-10-28T14:04:55.083 に答える