Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置秒和毫秒的计时器_Javascript_Timer - Fatal编程技术网

Javascript 设置秒和毫秒的计时器

Javascript 设置秒和毫秒的计时器,javascript,timer,Javascript,Timer,var计数=24000, 运行=正确, secondsNode=document.getElementById(“秒”), 毫秒node=document.getElementById(“毫秒”), 模具 mNew; 函数绘图(){ 如果(计数>0&&正在运行){ 请求动画帧(绘制); mNew=新日期().getTime(); 计数=计数-mNew+模具; 计数=计数>=0?计数:0; 模具=mNew; secondsNode.innerHTML=Math.floor(计数/1000); 毫秒

var计数=24000,
运行=正确,
secondsNode=document.getElementById(“秒”),
毫秒node=document.getElementById(“毫秒”),
模具
mNew;
函数绘图(){
如果(计数>0&&正在运行){
请求动画帧(绘制);
mNew=新日期().getTime();
计数=计数-mNew+模具;
计数=计数>=0?计数:0;
模具=mNew;
secondsNode.innerHTML=Math.floor(计数/1000);
毫秒node.innerHTML=计数%1000;
}
}
模具=新日期().getTime();
draw();
window.addEventListener(“向下键”,函数(e){
开关(如钥匙代码){
案例32://游戏
如果(正在运行){
运行=错误;
}否则{
运行=真;
模具=新日期().getTime();
draw();
}
打破
案例82://重置
计数=24000;
secondsNode.innerHTML=24;
毫秒snode.innerHTML=0;
运行=错误;
}
});

4秒和000毫秒

为了实现这一点,您需要使用以下方法将时间递减器更改为递增器:

count = count + mNew - mOld;
此外,您需要确保在达到
4000
而不是
0
时停止条件和检查

请参见下面的工作示例:

var计数=0,
运行=错误,
secondsNode=document.getElementById(“秒”),
毫秒node=document.getElementById(“毫秒”),
模具
mNew;
函数isElementInViewport(el){//运行函数检查元素是否在视口中
var rect=el.getBoundingClientRect();
返回rect.bottom>0&&rect.right>0&&rect.left<(window.innerWidth | document.documentElement.clientWidth)和&rect.top<(window.innerHeight | document.documentElement.clientHeight);
}
addEventListener('scroll',function(){//每次滚动时
如果(IsElementViewPort(secondsNode)){//检查p元素是否在屏幕上-如果在屏幕上,则:
running=true;//启动计时器(取消暂停)
模具=新日期().getTime();
draw();
}else{//如果元素不在屏幕上,则
running=false;//暂停计时器
}
});
函数绘图(){
如果(计数<4000&&running){//更改为检查计数<4000以保持运行
请求动画帧(绘制);
mNew=新日期().getTime();
count=count+mNew-mOld;//更改以增加计数
count=count>=4000?4000:count;//更改停止时钟递增
模具=mNew;
secondsNode.innerHTML=Math.floor(计数/1000);
毫秒node.innerHTML=计数%1000;
}
}
window.addEventListener(“向下键”,函数(e){
开关(如钥匙代码){
案例32://播放(空格)
如果(正在运行){
运行=错误;
}否则{
运行=真;
模具=新日期().getTime();
draw();
}
打破
案例82://重置(r)
计数=0;
secondsNode.innerHTML=0;
毫秒snode.innerHTML=0;
运行=真;
}
});
。其他{
垫底:100vh;
}

4秒000毫秒