0

画像のクロスフェードをシミュレートし、テキストを変更するスクリプトを作成しました。これは今のコードです:

var teller = 0;
var html = new Array();
var link = new Array();
html[0] = "Some text";
link[0] = "link1.html";
html[1] = "Some other text";
link[1] = "link2.html";
function beeldwissel() {
    tekstwissel();
    var $actief = $('#overvloeier IMG.actief');
    if ( $actief.length == 0 ) $actief = $('#overvloeier IMG:last');
    var $next =  $actief.next().length ? $actief.next() : $('#overvloeier IMG:first');
    $actief.addClass('laatst-actief');
    $next.css({opacity: 0.0})
        .addClass('actief')
        .animate({opacity: 1.0}, 1000, function() {
            $actief.removeClass('actief laatst-actief');});
        }

$(function() {setInterval( "beeldwissel()", 5000 );}); // 5000 = pauze van 5 seconden

function tekstwissel() {
    teller++;
    if (teller >= html.length) {
        teller = 0;
    }   
    document.getElementById('tel').value = teller;
    document.getElementById('tekst').innerHTML = html[teller];
}

function doLink() {
    var tel = document.getElementById('tel').value;
    window.open(link[tel],'_blank');
}

テキストの変更よりもフォーカスを変更すると、画像の変更が同期されなくなります...

この問題を回避するには、何を変更する必要がありますか?

4

1 に答える 1

0

2 つの関数は、非同期でなければ同時に実行できません。できる最善の方法は、非常に短い時間を設定して 2 つのタイムアウトを使用することです。

setTimeout(function() { /* code... */ },1);
setTimeout(function() { /* code... */ },1);

これにより、2 つの関数が同時に実行されます。

ただし、あなたの場合、1つの関数を使用するか、最初の関数で別の関数を呼び出すと、より簡単になりませんか?

function trigger() {
     // Do image fading here...
     // Text manipulation here...
}
于 2012-12-04T00:16:44.303 に答える