Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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_Date - Fatal编程技术网

Javascript 间隔函数更新秒数如何影响分钟数?

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

若使用整数计数器,那个么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: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);