向Javascript计时器添加前导零
我试图将前导零添加到秒值,但我一直遇到错误。我已经尝试了许多在这里发布的选择解决方案,但似乎无法使其发挥作用 我从跨度中提取值,因为这些值来自数据库向Javascript计时器添加前导零,javascript,timer,countdown,Javascript,Timer,Countdown,我试图将前导零添加到秒值,但我一直遇到错误。我已经尝试了许多在这里发布的选择解决方案,但似乎无法使其发挥作用 我从跨度中提取值,因为这些值来自数据库 var timer = $('.timer'); $('.prev-button,.next-button').hide(); setInterval(function () { var m = $('.min', timer), s = $('.sec', timer); if (m.length == 0
var timer = $('.timer');
$('.prev-button,.next-button').hide();
setInterval(function () {
var m = $('.min', timer),
s = $('.sec', timer);
if (m.length == 0 && parseInt(s.html()) <= 0) {
timer.html('Proceed to the Next Slide');
$('.prev-button,.next-button').fadeIn();
}
if (parseInt(s.html()) <= 0) {
m.html(parseInt(m.html() - 1));
s.html(60);
}
if (parseInt(s.html()) < 10) {
$('.sec').prepend(0)
}
if (parseInt(m.html()) <= 0) {
timer.html('Time remaining for this slide - <span class="sec">59</span> seconds')
}
s.html(parseInt(s.html() -1));
}, 1000);
var timer=$('.timer');
$('.prev按钮,.next按钮').hide();
setInterval(函数(){
变量m=$('.min',计时器),
s=$('秒',计时器);
如果(m.length==0&&parseInt(s.html())可以这样尝试:
if (parseInt(s.html()) < 10) {
$('.sec').val('0' + $('.sec').val());
}
if(parseInt(s.html())<10){
$('.sec').val('0'+$('.sec').val());
}
您需要将值视为字符串,而不是int
。JavaScript在将看起来像数字的东西转换为数字方面非常积极,这就是这里发生的事情。我修改了您的小提琴使其工作
您应该将时间存储在javascript int vars中,而不是每次都从html元素中读取时间。这会导致在将逻辑附加到html文档布局时出现可维护性问题
我没有修复您的所有代码,但我创建了两个变量,用于执行计算。两件事:最好注册一个开始时间,并与interval函数中的开始时间进行比较。计时器不能保证精确,但会在指定的时间间隔时或之后触发。如果计算机正忙,计时器可能会迟到
另外,如果您使用的是parseInt
,请始终指定一个基数参数(以数字为基数)。否则,字符串“08”将被解析为“0”,因为前导零被解释为八进制(以8为基数)。因此,请使用parseInt(字符串,10)
解析为一个正常的以10为基数的数字
至于添加前导零,我认为您应该保留一对变量,总时间为秒,而不是一直读取/写入元素
var持续时间、开始时间、间隔;
持续时间=parseInt($(“.min”).text(),10)*60+parseInt($(“.sec”).text(),10);
startTime=(新日期()).getTime();
函数倒计时(){
已用var,剩余,m,s;
已用=((新日期()).getTime()-startTime)/1000;
剩余=持续时间-已过;
当我使用typeof()确定解析的内容时,我慢慢意识到了这一点。谢谢
var duration, startTime, interval;
duration = parseInt($(".min").text(), 10) * 60 + parseInt($(".sec").text(), 10);
startTime = (new Date()).getTime();
function countDown() {
var elapsed, remaining, m, s;
elapsed = ((new Date()).getTime() - startTime) / 1000;
remaining = duration - elapsed;
if(remaining <= 0) {
clearInterval(interval);
$(".timer").text('Proceed to the Next Slide');
$('.prev-button,.next-button').fadeIn();
} else {
m = String(Math.round(remaining / 60));
s = String(Math.round(remaining % 60));
if( s < 10 ) {
s = "0" + s;
}
$(".min").text(m);
$(".sec").text(s);
}
}
interval = setInterval(countDown, 500);