Javascript 间隔函数更新秒数如何影响分钟数?
若使用整数计数器,那个么mod 60应该更容易实现,但Date()对象存在一些问题Javascript 间隔函数更新秒数如何影响分钟数?,javascript,date,Javascript,Date,若使用整数计数器,那个么mod 60应该更容易实现,但Date()对象存在一些问题 var d=新日期(); var计时器=50; d、 设置分钟(0); d、 设置秒(计时器); setInterval(函数(){ d、 设置秒(计时器); document.getElementById(“demo”).innerHTML=d.getMinutes()+“:”+d.getSeconds(); 计时器++; }, 1000); 假设初始时间为00:00:00 您将秒数设置为50,它将变为00
var d=新日期();
var计时器=50;
d、 设置分钟(0);
d、 设置秒(计时器);
setInterval(函数(){
d、 设置秒(计时器);
document.getElementById(“demo”).innerHTML=d.getMinutes()+“:”+d.getSeconds();
计时器++;
}, 1000);
假设初始时间为00:00:00
您将秒数设置为50
,它将变为00:00:00
然后将秒数设置为65
,它试图变为00:00:65
,但这无效,因此额外的秒数将添加到分钟数中:00:01:15
现在时间是00:01:15
如果将秒数更改为30
,它将变为00:01:30
。您正在更改当前设置时间的秒数,而不是第一次创建对象时设置的时间
所以时间是00:01:30
如果将秒数更改为65
,我们将得到00:01:65
,这是无效的,因此额外的秒数将添加到已经存在的分钟数中<代码>1+60/60=2因此您得到:00:02:15
如果您想采用这种方法,那么我建议使用矩库。它有很好的API来处理添加时间和克隆对象
var start=moment();
开始。分钟(0);
开始。秒(0);
var计时器=50;
setInterval(函数(){
//克隆原始对象,这样我们就不会从上一个值添加
var now=力矩(开始);
现在。秒(计时器);
document.getElementById(“demo”).innerHTML=now.format(“mm:ss”);
计时器++;
}, 1000);代码>
重置计时器
一分钟后:
var d = new Date();
var timeCounter = 50;
d.setMinutes(0);
d.setSeconds(timeCounter);
setInterval(function(){
d.setSeconds(timeCounter);
document.getElementById("demo").innerHTML = d.getMinutes() + ":" + d.getSeconds();
timeCounter++;
if(timeCounter === 60)
{
timeCounter=0;
d.setMinutes(d.getMinutes() + 1);
}
}, 1000);
当您达到60秒计数时,您必须增加分钟数并重置秒数
var output=document.getElementById(“演示”);
var d=新日期();
var计时器=55;
d、 设置分钟(0);
d、 设置秒(计时器);
setInterval(函数(){
log(“分钟:+d.getMinutes(),“秒”+d.getSeconds());
如果(时间计数器===60){
d、 setMinutes(d.getMinutes()+1);
计时器-=60;
}
d、 设置秒(计时器);
output.textContent=fixDigit(d.getMinutes())+“:”+fixDigit(d.getSeconds());
计时器++;
}, 1000);
功能固定数字(d){
返回(d<10)-“0”+d:d;
}
设置d.setSeconds(65)
将分钟增加1秒,并将秒更改为5秒。所以在每一个
使用timeCounter>59进行迭代,您也将增加分钟数
见:
如果指定的参数超出预期范围,
setSeconds()尝试更新日期中的日期信息
反对。例如,如果使用100作为secondsValue,则
日期对象中存储的分钟数将增加1和40
将使用秒
如果要实现简单的计数器,请使用:
d.setSeconds(d.getSeconds() + 1)
您将从50秒开始,并为迭代增加秒数
当秒数达到59时,它达到60,也就是1:00
一旦达到59,尝试将timeCount设置为50,此时的增量分钟将修复此问题
将代码段更改为以下内容
var d=新日期();
var计时器=50;
d、 设置分钟(0);
d、 设置秒(计时器);
setInterval(函数(){
d、 设置秒(计时器);
document.getElementById(“demo”).innerHTML=d.getMinutes()+“:”+d.getSeconds();
//警报(计时器);
如果(计时器==59){
var minutes=+d.getMinutes();
分钟+=1;
//警报(分钟);
d、 设置分钟(分钟);
计时器=50;
}否则
计时器++;
}, 1000);代码>