【发布时间】:2013-04-10 19:50:57
【问题描述】:
目前我正在研究 JavaScript、jQuery、HTML5 以提高自己。我有一个开源编码的时钟,我已将其转换为计数器(反向计数器)。
我遇到的问题是,在我的setInterval(){...} 中,我有四个变量 -> 秒、分钟、小时和天。问题是,当我得到秒数时,我得到的结果是 1.155、2.312、3.412(秒)。
我的 setInterval 函数如下
setInterval(function(){
//var duration = parseInt(Date.now() /1000 ) - 1365470000;
var futureTime = Date.parse('April 10, 2013 22:00:00');
var duration = (( parseInt(Date.now() - futureTime ) / 1000));
var seconds = duration % 60;
duration = parseInt(duration / 60);
var minutes = duration % 60;
duration = parseInt(duration / 60);
var hours = (duration)%24;
duration = parseInt(duration / 24);
var days = duration % 365;
animation(gVars.green, seconds, 60);
animation(gVars.blue, minutes, 60);
animation(gVars.orange, hours, 24);
animation(gVars.red, days, 365);
},1000);
}
自从我使用parseInt(Date.now()) 以来,我的输出在一段时间内低于随机时间。
我没有足够的代表,我必须提供链接。
http://i.stack.imgur.com/0Zkbi.png
如何去除setInterval(){} 函数中的小数点?
提前致谢。
【问题讨论】:
-
如您所见,设置间隔并不是每 1 秒运行一次,而是每 1.1 秒左右运行一次。会有一个小数,你只需要向上或向下舍入即可。
-
parseInt(seconds, 10) -> if (seconds < 10) seconds = '0'+seconds; -
你为什么不使用像
getHours()、getSeconds()等的Javascript日期函数? -
如果您只想四舍五入为整数,请查看 MDN (developer.mozilla.org/en-US/docs/JavaScript/Reference/…) 上的数学函数。如果你的意思是你想精确地每秒调用一次
setInterval,这是不可能的,因为浏览器会以不可预知的方式限制这个方法。 -
@NathanBouscal ,是的,先生,我刚刚发现我在尝试修复它时重复了几秒钟。删除重复的后,它就可以工作了。这很简单。我觉得很惭愧,应该考虑一下:)
标签: javascript jquery counter