2017-06-13 58 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(); 
    } 
} 

但是不行。 感謝

+0

沒有錯誤。當用戶選擇他的答案並點擊「下一步」時,下一個會自動顯示。沒有時間讓用戶看到正確的答案。我想向他展示他的答案,黃色的答案和紅色的正確答案,並在顯示下一個問題之前解釋6秒。 – Cutis

+0

JavaScript有時會令人困惑,如果你對如何在jQuery中做這件事感興趣,@Panos的答案就是你要找的,因爲'delay()'是'setTimeout()'和jQuery的jQuery包裝器。 ..只是工作。如果你想明白爲什麼它不起作用,我希望我的回答足夠清楚。 –

+1

謝謝,你的回答很明確,可以幫助我。 – Cutis

回答

1

你應該通過其中一個匿名函數調用到setTimeout()(在超時過期時放置要執行的內容)或定義函數的名稱。如果在名稱後面加上(),就像你這樣做了,這個函數在解析setTimeout()時執行,而不是在它到期時執行,期待運行你的函數的結果返回另一個函數,當setTimeout()到期時將執行 - 這很像匿名函數呢。

以下任何一項都將按預期工作。的函數名稱:

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

...或匿名包裝:

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

在最真實的生活場景,建議改變displaynNext()函數內部questionCounter價值,而不是之前。

1

與jQuery你可以使用:

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

+0

解決方案有三個問題。 ** 1。**你沒有解釋任何事情,就像你不知道它是如何工作或爲什麼工作。雖然有時很有用,但這樣的答案在[so]上通常被認爲是低質量的。詳情請見[回答]。 ** 2。**你假設有一個持有問題的'.container'。如果不是?如果它也包含不應該淡入/淡出的東西呢? ** 3。**您的解決方案顯示'6400ms'後面的下一個問題,因爲'fadeIn'的默認持續時間是'400ms'。所以你應該把'6000'改成'5600'。 –

+0

安德烈我在路上,移動版本的堆棧;) –

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