在显示下一步之前暂停jquery

时间:2017-06-13 10:18:11

标签: javascript jquery delay pause

在按钮上单击(游戏上下文),我想在显示下一个问题之前暂停以显示正确的答案。我该怎么做? 我试试这个:

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();
    }
}

但是不起作用。 感谢

3 个答案:

答案 0 :(得分:1)

使用jquery,您可以使用:

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

答案 1 :(得分:1)

您应该将匿名函数传递给setTimeout()(在超时到期时放置要执行的内容)或已定义函数的名称。如果将()放在名称之后,就像你一样,在解析setTimeout()时执行该函数,而不是在它到期时执行,期望运行函数的结果返回另一个将被执行的函数当setTimeout()到期时 - 就像匿名函数一样。

以下任何一种都可以按预期工作。功能名称:

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

...或匿名包装:

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

在大多数现实生活场景中,建议更改questionCounter函数内的displaynNext()值,而不是之前。

答案 2 :(得分:0)

看看这个

你做了一个小错误setTimeout(displayNext(),6000)立即调用,而你应该只传递函数名。 setTimeout(displayNext,6000)

如果您想使用参数进行调用,请确保将其编写为函数,然后将所有代码放入其中setTimeout(function(){displayNext(parameter1,parameter2);},6000)

&#13;
&#13;
function displayNext(){
alert("display");
}
&#13;
<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">
&#13;
&#13;
&#13;