2017-03-16 10 views
0

スライドショーを実行する次のコードがあります。私は静的な値を使うのではなく、関数の中から間隔の長さを設定できるようにしたい - 後で追加する他の要素にもよる。これは可能ですか?以下は動作しないようです。関数内でjavascriptsの継続時間を設定する

おかげ

$('#slideshow > div:gt(0)').hide(); 
setInterval(function() { 
    $('#slideshow > div:first') 
     .fadeOut(0) 
     .next() 
     .fadeIn(0) 
     .end() 
     .appendTo('#slideshow'); 
    window.duration = 1000; 
}, duration); 
+0

ような何か[それが実行している間のsetIntervalの間隔を変更する]の可能複製(http://stackoverflow.com/questions/1280263/changing-the-interval-of-setinterval-while-その実行中) –

答えて

0

あなたはsetTimeoutを使用することができます。

次に、コールバックで毎回この関数を呼び出す必要があります。

function myCallback() { 
    ... 
    ... 

    var myTime = 2435; // whatever depending on sth 

    setTimeout(myCallback, myTime); 
} 

setTimeout(myCallback, someInitialTime); 
+0

ありがとう。しかし、私は違いが表示されません?私の質問は、setTimeoutの関数内の持続時間の設定にも同様に適用できますか? – BigJ

+0

@BigJ 'createInterval'を使用すると、特定の期間の間隔が作成されます。後の時点で持続時間を保持する変数を変更すると、元々 'setInterval'を作成したときに使用した時間は変更されません。 'setTimeout'を使うと、一度だけ実行されるので、コールバック関数が実行された後でもう一度呼び出すことになります。その点では 'setInterval'と同じ効果がありますが、望むのであれば、1回のタイムアウト後に継続時間を変更することができます。 – Archer

+0

okありがとうございます! – BigJ

関連する問題