0

このフィドルで実行されている2つの関数があります

http://jsfiddle.net/JuFxn/8/

$('.child0,.child1,.child2,.child3,.child4').hide();
fadeItIn();
setTimeout(fadeItInDoom, 500);

function fadeItIn() {
    var child;

    child = 4;
    setTimeout(fadeIn, 3000);

    function fadeIn() {
        $("#child" + child).fadeIn(175);
        --child;
        if (child >= 0) {
            // Continue fading in
            setTimeout(fadeIn, 175);
        } else {
            // Start fading out
            ++child;
            setTimeout(fadeOut, 175);
        }
    }

    function fadeOut() {
        $("#child" + child).fadeOut(175);
        ++child;
        if (child <= 4) {
            // Continue fading out
            setTimeout(fadeOut, 175);
        } else {
            // Start over again
            setTimeout(fadeIn, 3000 - 1575);
        }
    }
}

function fadeItInDoom() {
    var doom;

    doom = 4;
    setTimeout(fadeInDoom, 3000);

    function fadeInDoom() {
        $("#doom" + doom).fadeIn(175);
        --doom;
        if (doom >= 0) {
            // Continue fading in
            setTimeout(fadeInDoom, 175);
        } else {
            // Start fading out
            ++doom;
            setTimeout(fadeOutDoom, 175);
        }
    }

    function fadeOutDoom() {
        $("#doom" + doom).fadeOut(175);
        ++doom;
        if (doom <= 4) {
            // Continue fading out
            setTimeout(fadeOutDoom, 175);
        } else {
            // Start over again
            setTimeout(fadeInDoom, 3000 - 1575);
        }
    }
}

私は、fadeItInの500ms後にfadeItInDoomが来るようにしたい。これは機能しますが、私が抱えている問題は、タブが非アクティブになると、2 番目のパルス アニメーションのタイミングがずれることです。これを行うことは意味がありませんが、fadeItInDoom 関数が入ったときに setTimeout が既に渡されているためです。私はその仮定で正しいですか?または、私が取得していない setTimeout で何か他のことが起こっていますか?

4

1 に答える 1