是否有可能将我的倒计时时间定义为现在几个小时“2014年12月25日00:01:00”但是我可能会有这样的“14:00”并且它每天都会运行。这是我的代码。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function cdtd() {
var xmas = new Date("December 25, 2014 00:01:00");
var now = new Date();
var timeDiff = xmas.getTime() - now.getTime();
if (timeDiff <= 0) {
clearTimeout(timer);
document.write("Christmas is here!");
}
var seconds = Math.floor(timeDiff / 1000);
var minutes = Math.floor(seconds / 60);
var hours = Math.floor(minutes / 60);
var days = Math.floor(hours / 24);
hours %= 24;
minutes %= 60;
seconds %= 60;
document.getElementById("daysBox").innerHTML = days;
document.getElementById("hoursBox").innerHTML = hours;
document.getElementById("minsBox").innerHTML = minutes;
document.getElementById("secsBox").innerHTML = seconds;
var timer = setTimeout('cdtd()',1000);
}
</script>
</head>
<body>
Days Remaining:
<div id="daysBox"></div>
Hours Remaining:
<div id="hoursBox"></div>
Minutes Remaining:
<div id="minsBox"></div>
Seconds Remaining:
<div id="secsBox"></div>
<script type="text/javascript">cdtd();</script>
</body>
</html>
倒计时工作正常,但要使其工作,我必须定义时间 (毫米:DD:YY:HH:MM:SS)。我的问题是我可以定义时间吗 这个(hh:mm:ss)因为日期并不重要,只有那个 问题是时间(hh:mm:ss)以及结束倒计时的时间 重新启动并再次开始计数到示例14:25:00(hh:mm:ss)。
答案 0 :(得分:0)
不要将解析日期字符串留给日期构造函数。 ES5定义了支持的字符串格式,但并非所有浏览器都支持它。在ES5之前,解析日期字符串完全取决于实现。在这种情况下,您确切地知道要设置的日期和时间,因此请使用数字参数:
> var xmas = new Date(2014, 11, 25);
将根据系统设置在本地时区为2014-12-25T00:00:00创建Date对象。
> if (timeDiff <= 0) {
> clearTimeout(timer);
无需清除任何超时,只是不要再次调用 setTimeout 。
> document.write("Christmas is here!");
如果在加载事件后调用,则将清除整个文档。可能不是你想要为午夜观看计时器的人做的事情,然后丢失了整个页面。 : - )
> var timer = setTimeout('cdtd()',1000);
每1秒调用一次setTimeout意味着计时器将逐渐漂移,偶尔会出现跳过一秒钟。如果与系统时钟相比,它也不会“打勾”。相反,请根据当前毫秒设置延迟,例如
> var timer = setTimeout('cdtd()', (1020 - now%1000));
所以接下来的整整一秒后它将在20ms左右运行。如果时间已过,请不要调用 setTimeout 。
如果您只是在寻找格式化时间,例如hh:mm:ss,那么您需要一个小函数来填充单个数字,然后连接这些值,例如
function pad(n){return (n<10? '0' ; '') + n;}
然后:
document.getElementById("hoursBox").innerHTML = pad(hours) + ':' + pad(minutes) + ':' +
pad(seconds);
您可以从那里找出如何格式化日期部分。请注意,月份:日期:年份格式对绝大多数网络用户来说非常混乱。最好使用像year-month-day hh:mm:ss
答案 1 :(得分:0)
这个小提琴的一些工作结果:http://jsfiddle.net/dehisok/6Wu9a/1/
var now = new Date();
var xmas = new Date(now.getFullYear(),now.getMonth(),now.getDate(),23,1,0);
但是有一个错误:如果针时间过去 - 它会崩溃:(不幸的是,没有时间修复。
我已将document.write更改为jquery,因为jsfiddle不支持d.write。
我希望,这就是你所需要的。
祝你好运!