2017-06-13 3 views
1

次のボタンをクリックすると(ゲームのコンテキスト)、次の質問を表示する前に正解を表示するために一時停止します。どうすればいい? 私はこれ試してみてください。jqueryは次のステップを表示する前に一時停止します

showCorrectAnswer(); 
questionCounter++; 
setTimeout(displayNext(), 6000); 
/* Or */ 
showCorrectAnswer(); 
questionCounter++; 
wait(6000); 
displayNext(); 

/*with wait*/ 
function wait(ms){ 
    var start = new Date().getTime(); 
    var end = start; 
    while(end < start + ms) { 
     end = new Date().getTime(); 
    } 
} 

をしかし、動作しません。 おかげであなたが使用できるjQueryを使って

+0

エラーはありません。ユーザーが自分の答えを選択して「次へ」をクリックすると、次のものが自動的に表示されます。ユーザーが正解を見る時間がない。私は彼に黄色の答えを示し、赤で正しい答えを6秒間説明して、次の質問を表示します。 – Cutis

+0

JavaScriptは時には混乱することがあります。jQueryでそれを行う方法に興味があるなら、 'delay()'は 'setTimeout()'とjQueryのラッパーですので、@ Panosの答えはあなたが探しているものです。 ..ちょうど働く。なぜそれがうまくいかなかったのか理解したいのであれば、私の答えは十分にはっきりしていると思います。 –

+1

ありがとうございます、あなたの答えは明確で、私を助けます。 – Cutis

答えて

1

機能をsetTimeout()(タイムアウトが終了したときに実行したいものに置き換えます)または定義された関数の名前に置き換えます。あなたの名前の後に()を置くと、setTimeout()が期限切れになったときではなく、setTimeout()が期限切れになったときに実行される別の関数を返すように関数を実行した結果が期待されます。匿名関数が行います。

次のいずれかが正常に動作します。機能の名称:

showCorrectAnswer(); 
questionCounter++; 
setTimeout(displayNext, 6000); 

...または匿名ラッパー:ほとんどの現実のシナリオで

showCorrectAnswer(); 
questionCounter++; 
setTimeout(function(){ 
    displayNext(); 
}, 6000); 

、前ではなく、displaynNext()関数内questionCounter値を変更することをお勧めします。

1

$('.container').hide().delay(6000).fadeIn(displayNext());

+0

解決策には3つの問題があります。 ** 1。**あなたは何がどのように、なぜそれがうまくいくのかわからないような何も説明していません。このような回答は、しばしば役に立ちますが、[so]では一般的に低品質とみなされます。詳細は[回答]を参照してください。 ** 2。**質問を保持している '.container 'があると仮定しています。もしそうでなければ?退色してはならないものも含まれている場合はどうなりますか? ** 3。**あなたの解決策は 'fadeIn'のデフォルト期間が' 400ms'であるため、 '6400ms'の後に次の質問を表示します。だから、 '6000'を' 5600'に変更する必要があります。 –

+0

Andrei私は道路上にあります;スタックのモバイル版;) –

0

チェックアウトこの

あなたはすぐに代わりにあなただけの関数名を渡す必要があります呼び出し、小さなミスsetTimeout(displayNext(),6000)を行っています。 setTimeout(displayNext,6000)

あなたはパラメータで呼び出す行いたい場合はあなたが匿名のいずれかを渡すことになっているあなたは関数として記述していることを確認し、その後、その中にすべてのコードを入れsetTimeout(function(){displayNext(parameter1,parameter2);},6000)

function displayNext(){ 
 
alert("display"); 
 
}
<input type="number" step="1000" id="num_milisecond" value=1000> milliseconds 
 
<input type="button" onclick="setTimeout(displayNext, document.getElementById('num_milisecond').value);" value="click to allert">

+0

私はこれをしました。私が望むようにそれは動作しません。 – Cutis

関連する問題