在倒计时/定时器格式时间分钟和秒
Format time to minutes and seconds in countdown/timer
我正在构建一个番茄时钟/倒计时,但有一个问题与格式选择的时间分钟/小时/秒。我试图将secs变量乘以60 (secs*=60),但它弄得一团糟,我不知道如何修复它。所以,我希望它"知道",它需要从25分钟倒计时-在25:00格式,或更多/更少(hh:mm:ss),如果用户选择+和-按钮。非常感谢所有的帮助
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<h1 id="num">25 min</h1>
<div id="status"></div>
<button onclick='countDown(secs, "status")'>Start countdown</button>
<button onclick='increaseNumber()'>+</button>
<button onclick='decreaseNumber()'>-</button>
<script src="script.js"></script>
</body>
</html>
,这里是javascript:
var num = document.getElementById('num').innerHTML;
var secs = parseInt(num);
function countDown(secs, elem) {
var element = document.getElementById(elem);
secs--;
var timer = setTimeout(function() {
countDown(secs, elem);
}, 1000);
//secs *= 60;
if(secs%60 >= 10){ //10 - if it's not a single digit number
document.getElementById('num').innerHTML = (Math.floor(secs/60) + ":" + secs%60);
}
else{
document.getElementById('num').innerHTML = (Math.floor(secs/60) + ":" + "0" + secs%60);
}
element.innerHTML = "Please wait for "+secs+" minutes";
//if timer goes into negative numbers
if(secs < 1){
clearTimeout(timer);
element.innerHTML = '<h2>Countdown complete!</h2>';
element.innerHTML += '<a href="#">Click here now</a>';
}
}
function increaseNumber() {
secs += 5;
document.getElementById('num').innerHTML = secs + ' min';
}
function decreaseNumber() {
if(secs >= 10) {
secs -= 5;
document.getElementById('num').innerHTML = secs + ' min';
}
}
你为什么要手工做呢?如果您不介意使用库,moment.js可以很好地处理时间操作。它很轻,很容易使用。
如果你因为一些限制而不得不手工做,它们是什么?
参考://Creates a moment. Its value is the time of creation
var timer = moment();
//add 60 seconds to the timer
timer.add(60, 's');
//Removes 1 minutes from the timer
timer.subtract(1, 'm');
来源:
添加减
试试这个countDown
函数:
function countDown(secs, elem) {
var element = document.getElementById(elem);
element.innerHTML = "Please wait for "+secs+" minutes";
var second = 0;
var timer = setInterval(function(){
var extraZero = second < 10 ? '0' : '';
document.getElementById('num').innerHTML = secs + ":" + extraZero + second;
if (second-- === 0) {
second = 59;
if (secs-- === 0){
clearInterval(timer);
element.innerHTML = '<h2>Countdown complete!</h2>';
element.innerHTML += '<a href="#">Click here now</a>';
}
}
}, 1000);
}
由于您正在倒数秒数,因此使用setInterval
而不是setTimeout
更有意义。
相关文章:
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 引导时间选择器在增加或减少小时和分钟的同时获取 NaN
- Moment.js unix时间戳,以分钟为单位显示以前的时间
- 计算JavaScript中的时间差异(天+小时+分钟+秒)
- 使用 javascript 将指定的分钟数添加到时间
- 用javascript将时间格式化为小时和分钟
- 如何设置此javascript以正确显示花费的总时间,显示超出正常时钟的分钟数
- 如何从javascript或jquery中的时间字符串中获取分钟数
- Javascript模糊时间(例如'10分钟前');s精确到几秒钟
- 从值为零angularjs的时间中删除分钟部分
- Javascript:如何以毫秒为单位将时间显示为天:小时:分钟
- 在 Google 图表 y 轴上将时间格式设置为小时:分钟
- 基于时间的 javascript,创建一个大约 30 分钟的空白响应
- 如何像这样显示时间,例如:1秒前,1分钟前,1小时前,1个月前
- 通过Javascript错误将考试时间设置为30分钟
- Javascript/jQuery使用正则表达式搜索“分钟:秒”时间
- 从当前日期和时间 JavaScript 中减去 5 分钟
- 在 JavaScript 中将 Unix 时间转换为“几分钟前”
- 舍入时间间隔最长为 15 分钟步长
- 节点 - MySQL 查询,需要几分钟时间,在几分钟后重复自己,然后完成原始查询