Javascript时钟为负
我试图修复它,但失败了Javascript时钟为负,javascript,countdown,clock,Javascript,Countdown,Clock,我试图修复它,但失败了 函数ShowTime(){ var now=新日期(); var明天=新日期(); 明天.setDate(今天.getDate()+1); var hrs=17-now.getHours(); var mins=30-now.getMinutes(); var secs=60-now.getSeconds(); 如果(小时
函数ShowTime(){
var now=新日期();
var明天=新日期();
明天.setDate(今天.getDate()+1);
var hrs=17-now.getHours();
var mins=30-now.getMinutes();
var secs=60-now.getSeconds();
如果(小时<0){
var hrs=17-明天。getHours();
var mins=30-明天。getMinutes();
var secs=60-moother.getSeconds();
}
timeLeft=“”+小时+小时+分钟+分钟+秒+秒”;
$(“#倒计时”).html(timeLeft);
}
ShowTime();
var倒计时=设置间隔(显示时间,1000)代码>
您需要调用clearInterval(倒计时)代码>当您要停止计时器时。按照间隔时间
WindowOrWorkerGlobalScope mixin的clearInterval()方法取消一个定时重复操作,该操作以前是通过调用setInterval()建立的
另外,我认为您提供的代码需要更改为tomory.setDate(now.getDate()+1)代码>而不是明天.setDate(今天.getDate()+1)代码>我从上一张便条中找到了这个,但在SO中找不到问题的链接
<font size=1><p id='demo'></font>
<script src="path/to/jquery.js"></script>
<script>
// Set the date we're counting down to
//var insert1="<?php echo $insert1; ?>";
//var timeout1="<?php echo $timeout1; ?>";
var insert1="05/23/2017 00:00:00";
var timeout1="05/25/2017 00:00:00";
// Update the count down every 1 second
var x = setInterval(function() {
var countDownDate = new Date(timeout1).getTime();
var countDownDates = new Date().getTime();
// Get todays date and time
// Find the distance between now an the count down date
var distance = countDownDate - countDownDates;
//var distance = countDownDates;
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Output the result in an element with id="demo"
document.getElementById("demo").innerHTML = days + "d " + hours + "h "
+ minutes + "m " + seconds + "s ";
// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = "Time out";
}
}, 1000);
</script>
//确定我们倒计时的日期
//var insert1=“”;
//var timeout1=“”;
var insert1=“2017年5月23日00:00:00”;
var timeout1=“2017年5月25日00:00:00”;
//每1秒更新一次倒计时
var x=setInterval(函数(){
var countDownDate=新日期(timeout1).getTime();
var countDownDates=new Date().getTime();
//获取今天的日期和时间
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-倒计时日期;
//var距离=倒计时日期;
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(1000*60*60*24));
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//在id=“demo”的元素中输出结果
document.getElementById(“demo”).innerHTML=days+d+hours+h
+分钟+米+秒+秒;
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
document.getElementById(“demo”).innerHTML=“超时”;
}
}, 1000);
您将变量定义为now并查找today,因此它不显示倒计时
新的html如下所示
<div id="countdown"></div>
function ShowTime() {
var today= new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);
var hrs = 17-now.getHours();
var mins = 30-now.getMinutes();
var secs = 60-now.getSeconds();
if(hrs < 0) {
var hrs = 17-tomorrow.getHours();
var mins = 30-tomorrow.getMinutes();
var secs = 60-tomorrow.getSeconds();
}
timeLeft = "" +hrs+' hours '+mins+' minutes '+secs+' seconds';
$("#countdown").html(timeLeft);
}
ShowTime();
var countdown = setInterval(ShowTime ,1000);
新的js如下所示
<div id="countdown"></div>
function ShowTime() {
var today= new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);
var hrs = 17-now.getHours();
var mins = 30-now.getMinutes();
var secs = 60-now.getSeconds();
if(hrs < 0) {
var hrs = 17-tomorrow.getHours();
var mins = 30-tomorrow.getMinutes();
var secs = 60-tomorrow.getSeconds();
}
timeLeft = "" +hrs+' hours '+mins+' minutes '+secs+' seconds';
$("#countdown").html(timeLeft);
}
ShowTime();
var countdown = setInterval(ShowTime ,1000);
函数ShowTime(){
var today=新日期();
var明天=新日期();
明天.setDate(今天.getDate()+1);
var hrs=17 now.getHours();
var mins=30 now.getMinutes();
var secs=60 now.getSeconds();
如果(小时<0){
var hrs=17明天。getHours();
var mins=30明天。getMinutes();
var secs=60明天。getSeconds();
}
timeLeft=“”+小时+小时+分钟+分钟+秒+秒”;
$(“#倒计时”).html(timeLeft);
}
ShowTime();
var倒计时=设置间隔(显示时间,1000);
您的算术错误
每次时钟滴答作响时,都会生成一个新的日期。如果是18:00那么:
var hrs = 17 - now.getHours();
将变为负值,因此您将执行以下操作:
var hrs = 17 - tomorrow.getHours();
但这将产生-1。您要做的是为结束时间创建一个日期,然后从中减去当前日期,并将结果(毫秒)解析为小时、分钟和秒
我不知道分秒调整是为了什么,它们对我来说没有意义。下面对您的代码进行了一些小的调整:
函数ShowTime(){
var now=新日期();
var end=新日期(+现在);
var endHour=17;
结束设定小时(结束小时,0,0,0);
//如果过去的结束,定在明天
如果(现在>=结束){
end.setDate(end.getDate()+1);
}
log('倒计时到'+end.toString());
//获取差异并划分为小时、分钟、秒
var diff=结束-现在;
var-hrs=diff/3.6e6 | 0;
风险值分钟=(差异%3.6e6)/6e4 | 0;
var secs=(差异%6e4)/1000 | 0;
//格式化并写入文档
timeLeft=“”+小时+小时+分钟+分钟+秒+秒”;
document.getElementById('countdown')。innerHTML=timeLeft;
}
ShowTime();
var倒计时=设置间隔(显示时间,1000)代码>
显示的代码根本不运行,因为当前未定义变量。不管怎么说,如果你想倒计时到零并停在那里,那么你需要在这一点上调用clearInterval()
。你还想完成什么?@nnnn-从代码上看,OP似乎不希望它停在零,而是希望“明天”开始倒计时到17:00(对分钟和秒进行一些不寻常的调整).但是,OP没有要求php。是的,我只是编辑以排除php,它的工作原理是一样的。。谢谢那些投票反对的人。。