Javascript倒计时将在0:00停止
Javascript Countdown to stop at 0:00
我找到了这个倒计时脚本,并进行了一些基本的格式更改,但我不知道如何让计时器在0:00停止,而不是进入负数。
如有任何帮助,我们将不胜感激:)
<title>Countdown</title>
<script type="text/javascript">
// set minutes
var mins = 3;
// calculate the seconds (don't change this! unless time progresses at a different speed for you...)
var secs = mins * 60;
function countdown() {
setTimeout('Decrement()', 1000);
}
function Decrement() {
if (document.getElementById) {
minutes = document.getElementById("minutes");
seconds = document.getElementById("seconds");
// if less than a minute remaining
if (seconds < 59) {
seconds.value = secs;
} else {
minutes.value = getminutes();
seconds.value = getseconds();
}
secs--;
setTimeout('Decrement()', 1000);
}
}
function getminutes() {
// minutes is seconds divided by 60, rounded down
mins = Math.floor(secs / 60);
return mins;
}
function getseconds() {
// take mins remaining (as seconds) away from total seconds remaining
return secs - Math.round(mins * 60);
}
</script>
</head>
<body>
<div id="timer"><font size="4"><b>You have</b></font>
<input id="minutes" type="text" style="width: 16px; border: none; background-color:transparent; color: #FF0000; font-size: 24px; font-weight: bold;"><font size="4"><b>:</b></font>
<input id="seconds" type="text" style="width: 30px; border: none; background-color:transparent; color: #FF0000; font-size: 24px; font-weight: bold;"> <font size="4"><b>to claim your free game.</b></font></div>
<script>
countdown();
</script>
您需要检查秒和分钟是否都为零,以及它们是否从Decrement函数中返回,而不是再次调用setTimeout。
function Decrement() {
if (document.getElementById) {
minutes = document.getElementById("minutes");
seconds = document.getElementById("seconds");
// if less than a minute remaining
if (seconds.value < 59) {
seconds.value = secs;
} else {
minutes.value = getminutes();
seconds.value = getseconds();
}
console.log(seconds.value);
if (minutes.value == 0 && seconds.value == 0) {
return;
}
secs--;
setTimeout('Decrement()', 1000);
}
}
我不确定你用<59条件。试着删除这样的逻辑:
function Decrement() {
if (document.getElementById) {
minutes = document.getElementById("minutes");
seconds = document.getElementById("seconds");
minutes.value = getminutes();
seconds.value = getseconds();
console.log(seconds.value);
if (minutes.value == 0 && seconds.value == 0) {
return;
}
secs--;
setTimeout('Decrement()', 1000);
}
}
这是一个糟糕的倒计时算法。这样的东西会更好
var timeout, timer;
startChrono(3*60*1000); //3 min
function startChrono (milisec) {
timeout = (new Date()).getTime() + milisec;
timer = setInterval("tick()", 1000);
}
function tick () {
var now = (new Date()).getTime();
var diff = now - timeout;
if (diff <= 0) {
clearInterval(timer);
diff = 0;
}
render(diff);
}
function render (milisec) {
var sec = Math.floor(milisec / 1000);
var min = Math.floor(milisec / 60);
sec = sec - (min*60);
document.getElementById("minutes").value = sec;
document.getElementById("seconds").value = min;
}
相关文章:
- 停止javascript倒计时
- clearInterval不停止超过0(倒计时)
- 如何制作两个倒计时计时器,如果一个开始,另一个会停止
- Javascript倒计时将在0:00停止
- 我想在 0 处停止这个 JavaScript 倒计时
- 为什么我的倒计时没有停止在 0.
- 番茄钟倒计时后不停止
- 停止倒计时并每天显示消息
- 如果秒=1,停止倒计时3秒,转到秒=0
- 带有cookie的JavaScript倒计时计时器在一分钟后停止
- 无法从按钮或计时器倒计时后停止setInterval javascript
- 一旦达到目标时间,将倒计时计时器停止在0
- 停止倒计时定时器Javascript onClick
- Javascript倒计时与开始/停止/重置和输入时间从用户
- 如何让Jquery最终倒计时插件在一天的特定时间停止
- 如何在第二次倒计时后停止Javascript计时器
- 倒计时到“0”时停止倒计时
- 在一定时间后停止倒计时计时器
- 停止Javascript的倒计时计时器并调用动作
- Emberjs倒计时-无法停止