我无法让我的javascript计数器正常工作

时间:2017-06-01 08:26:53

标签: javascript timer

我正在尝试为我的网站计时器b / w两个日期(现在日期和我的cdate输入)请我有人帮我解决我的代码



function ctimer() {
	var cdate = new Date("2017-03-31 13:06:57");
	var now = new Date();
	var timeDiff = cdate.getTime() - now.getTime();
	if (timeDiff <= 0) {
                clearTimeout(timer);
		
        }
	var seconds = Math.floor(timeDiff / 1000);
	var minutes = Math.floor(seconds / 60);
	var hours = Math.floor(minutes / 60);
	var days = Math.floor(hours / 24);


	document.getElementById("daysBox").innerHTML = days;
	document.getElementById("hoursBox").innerHTML = hours;
	document.getElementById("minsBox").innerHTML = minutes;
	document.getElementById("secsBox").innerHTML = seconds;
	var timer = setTimeout('ctimer()',1000);
}
&#13;
<span id="daysBox"></span>
Days
<span id="hoursBox"></span>
Hrs:
<span id="minsBox"></span>
Min:
<span id="secsBox"></span>
Sec

<script>ctimer();</script>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

在日变量

之后添加
var days = Math.floor(hours / 24);
hours %= 24;
minutes %= 60;
seconds %= 60;

答案 1 :(得分:1)

您只需忘记%即可获得分钟,秒数和小时的剩余值

function ctimer() {
	var cdate = new Date("2017-04-31 13:06:57");
	var now = new Date();
	var timeDiff = cdate.getTime() - now.getTime();

	var seconds = Math.floor(timeDiff / 1000);
	var minutes = Math.floor(seconds / 60);
	var hours = Math.floor(minutes / 60);
	var days = Math.floor(hours / 24);


	
	var timer = setTimeout('ctimer()',1000);
        if (timeDiff <= 0) {
            clearTimeout(timer);
            return;
        }
        document.getElementById("daysBox").innerHTML = (days);
	    document.getElementById("hoursBox").innerHTML = (hours%24);
	    document.getElementById("minsBox").innerHTML = (minutes%60);
	    document.getElementById("secsBox").innerHTML = (seconds%60);
}

ctimer()
<h2>reamaining time to 2017-06-31 13:06:57 is :</h2>
<span id="daysBox"></span>
Days
<span id="hoursBox"></span>
Hrs:
<span id="minsBox"></span>
Min:
<span id="secsBox"></span>
Sec

答案 2 :(得分:1)

有些事情发生了变化

  • 不要将字符串传递给setTimeout
  • 使用modulo计算天数/小时/分钟剩余
  • timer全局,否则它不会停止倒计时。

&#13;
&#13;
var timer;
function ctimer() {
	var cdate = new Date("2017-06-31 13:06:57");
	var now = new Date();
	var timeDiff = cdate.getTime() - now.getTime();
	if (timeDiff <= 0) {
                clearTimeout(timer);
		
        }
	var days = Math.floor(timeDiff / (24*60*60*1000))
	var hours = Math.floor(timeDiff / (60*60*1000)) % 24;
	var minutes = Math.floor(timeDiff / (60*1000)) % 60;
	var seconds = Math.floor(timeDiff / 1000) % 60;


	document.getElementById("daysBox").innerHTML = days;
	document.getElementById("hoursBox").innerHTML = hours;
	document.getElementById("minsBox").innerHTML = minutes;
	document.getElementById("secsBox").innerHTML = seconds;
	timer = setTimeout(ctimer,1000);
}
ctimer();
&#13;
<span id="daysBox"></span>
Days
<span id="hoursBox"></span>
Hrs:
<span id="minsBox"></span>
Min:
<span id="secsBox"></span>
Sec
&#13;
&#13;
&#13;