javascript / jquery倒计时器与JSfiddle的例子?
我正在构建一些东西,其中一个是倒数计时器,倒计时永远不会超过一个小时,所以我需要做的就是倒计时分钟和秒。
我有部分工作,但问题是前导零。 我让它在几秒钟内完成工作,但没有分钟。
看看我的例子http://jsfiddle.net/cgweb87/GHNtk/
JavaScript的
setInterval(function() { var timer = $('span').html(); timer = timer.split(':'); var minutes = timer[0]; var seconds = timer[1]; seconds -= 1; if (minutes < 0) return; if (minutes < 10 && length.minutes != 2) minutes = '0' + minutes; if (seconds < 0 && minutes != 0) { minutes -= 1; seconds = 59; } else if (seconds < 10 && length.seconds != 2) seconds = '0' + seconds; $('span').html(minutes + ':' + seconds); }, 1000);
HTML
10:10
我想要发生的是倒数计时器可以在1小时内开始,它将以前导零(即这种格式)倒计时;
08:49 46:09
当它到达倒计时只是显示:
00:00
感谢任何输入,我不想使用插件,我想学习它。
setInterval
返回稍后可用于clearInterval
的标识:
var interval = setInterval(function() { /* snip */ $('span').html(minutes + ':' + seconds); if (parseInt(minutes, 10) == 0 && parseInt(seconds, 10) == 0) clearInterval(interval); }, 1000);
并且,为了避免不断增加的分钟 – 00000001:42
– 或者:
- 在前缀测试
length.minutes
更改为minutes.length
。 - 检索时将值转换为Numbers –
var minutes = parseInt(timer[0], 10);
– 只测试if (minutes < 10) ...
选择#2,这是一个更新: http : //jsfiddle.net/BH8q9/
检查一个字符串的长度,它不是
length.minutes
length.seconds
它是
minutes.length
seconds.length
对代码进行了一些简单的更改,它可以按照您的意愿运行:
setInterval(function() { var timer = $('span').html(); timer = timer.split(':'); var minutes = timer[0]; var seconds = timer[1]; seconds -= 1; if (minutes < 0) return; if (seconds < 0 && minutes != 0) { minutes -= 1; seconds = 59; } else if (seconds < 10 && length.seconds != 2) seconds = '0' + seconds; if ((minutes < 10) && ((minutes+'').length < 2)) minutes = '0' + minutes; $('span').html(minutes + ':' + seconds); }, 1000);
我将if((分钟<10)....线向下移动到分钟后发生 - = 1;否则在9:59,你不会得到额外的0.还有length.minutes
是错误的方式,它需要是minutes.length
- 但是为了确保它被视为一个字符串(有一个长度,而一个数字没有),我给它添加了一个空字符串,然后取了它的长度。这是((minutes+'').length < 2
(检查你有前导零)。这是实现它的最好方法,但它最接近你现有的代码。
我知道答案已经被接受但想要投入我的2c:我希望尽可能避免额外的编码。 使用Jonathan Lonowski的方法,我会改进它:
var interval = setInterval(function() { var timer = $('span').html().split(':'); //by parsing integer, I avoid all extra string processing var minutes = parseInt(timer[0],10); var seconds = parseInt(timer[1],10); --seconds; minutes = (seconds < 0) ? --minutes : minutes; if (minutes < 0) clearInterval(interval); seconds = (seconds < 0) ? 59 : seconds; seconds = (seconds < 10) ? '0' + seconds : seconds; minutes = (minutes < 10) ? '0' + minutes : minutes; $('span').html(minutes + ':' + seconds); }, 1000);