我正在尝试使用以下代码
- 显示纸牌游戏的结果,
- 等待 3 秒钟,同时显示倒计时,然后,
-
重新加载屏幕。
//Display results, at least that was the idea. for(var player = 0; player < players.length; player++) { resultString = players[player][6] if (result == null) { resultString += ", its a tie."; } else { resultString += (player == 0 ? ", you" : ", cassino") + (player == result ? (player == 0 ? " win" : " wins") : (player == 0 ? " lose" : " loses")); document.getElementById(player == 0 ? "player" : "casino"). childNodes[0].nodeValue = resultString; } showHand(players[player]); } //Lag for 3 seconds while displaying a countdown. At least it lags alright. var time = new Date().getTime(); while (((time / 1000) + 3) - (new Date().getTime() / 1000 ) > 0) { document.getElementById("call").childNodes[0].nodeValue = "Next round in " + Math.ceil(((time / 1000) + 3) - (new Date().getTime() / 1000 )) .toFixed(0); } //Reload screen. Working fine. dealHands(); }
问题是,通过运行此代码,屏幕在加载重新加载屏幕之前会冻结 3 秒,即使控制台.log指出要在程序的"//显示结果"部分中显示的值没有问题。事实上,如果我评论评论"//滞后 3 秒......">之后的部分结果将按预期显示。是否有我不知道的 .time(( 属性正在覆盖代码?
如果要在
3 秒后显示倒计时,可以将代码以在函数中重新加载屏幕,并使用不会冻结窗口的window.setTimeout
调用该函数,并且在您指定的时间后调用函数。
对于倒计时显示,您可以使用 window.setInterval
.