为什么倒计时停留在“1”
Why does the Countdown stuck at "1"?
var count=6
var counter=setInterval(timer, 1000);
function timer(){
count=count-1;
if (count === 0){
requestAnimationFrame(repeat);
clearInterval(counter);
return;
}
var countdown = createEntity($('<div id="countd"><p id="countp"></p></div>'));
game.add(countdown);
document.getElementById("countp").innerHTML=count;
}
这是我的倒计时方法。我正在编写一个游戏。首先它显示了一个倒计时…但为什么它总是停留在"1"?如果我在播放,它在屏幕上仍然保持"1"
我的想法是,clearInterval(Counter)但它不起作用。还有其他方法吗?
你的代码的问题是:
- 递减变量
- 测试它是否为零,如果是则从循环返回。
- 在所有其他情况下,更新div标签。
换句话说:如果计数器为零,则不更新div标签,因此最后显示的值为1
假设你所描述的问题是你代码中唯一的问题,你可以把它改成这样:
function timer() {
var countdown = createEntity($('<div id="countd"><p id="countp"></p></div>'));
game.add(countdown);
count -= 1;
document.getElementById("countp").innerHTML=count;
if (count === 0) {
requestAnimationFrame(repeat);
clearInterval(counter);
}
}
我基本上只是将if语句移动到字段更新之后。我还没有测试代码,但是如果你知道要修改什么。
我很好奇你是否真的想在每次定时器调用时调用createEntity
和game.add(countdown)
。在大多数情况下,您希望在调用timer函数之前创建标记,并只更新值。但也许你正在做一些动画,因此需要为每个值单独标记,所以这样做不一定是错误的。
如果这是一个仅显示的问题(我猜它是),那么当计数为0时,应该在从函数返回之前对HTML进行更新。如果计数器变为0,则没有更新显示。
if (count === 0){
//assuming repeat is a variable defined somewhere in the rest of your code
requestAnimationFrame(repeat);
document.getElementById("countp").innerHTML=count;
clearInterval(counter);
return;
}
相关文章:
- Firefox,如何提交表单触发文件下载,但停留在网页上
- Jssor滑块停留在第一个图像上,直到我单击它
- JavaScript-在倒计时期间禁用点击功能
- 在浏览器关闭时,单击确认对话框中的“停留在页面上”,执行一个方法
- 可以'在html中,没有任何东西可以停留在图片上方
- 如何在D3中添加一个强制拖动事件,并使节点停留在我离开它的地方
- javascript onmouseover/omouseout停留在前一个内容中,直到悬停/触发下一个内容
- 如果用户由于第二个处理程序中的对话框而停留在页面上,则跳过加载前处理程序
- 当结果点击值停留在文本框中时,自动完成搜索
- 停留在页面上取决于值jquery
- javascript在倒计时中显示秒数
- Jquery:图像获胜'点击后不会改变,而是停留在悬停图像上.
- 如何滚动浏览内容并停留在段落
- 我的猜测次数不会停留在正确的水平上
- Google Maps Javascript API停留在精简模式
- 为什么我的 Jquery 轮播不会停留在最后一张图片上
- 如何阻止我的汉堡图标停留在顶部栏上,使其与侧边菜单一起显示
- 使用计时器在倒计时后关闭窗口
- 我想在页面刷新时停留在当前光标位置
- 停留在一个页面上具有不同的页面