Javascript 设置倒计时,然后显示投票打开,然后在投票期结束后显示投票结束
这是我当前程序的代码。我有一个倒计时的运行代码我现在的问题是当投票期结束时,我想显示投票结束,而不是总是显示投票打开Javascript 设置倒计时,然后显示投票打开,然后在投票期结束后显示投票结束,javascript,countdown,Javascript,Countdown,这是我当前程序的代码。我有一个倒计时的运行代码我现在的问题是当投票期结束时,我想显示投票结束,而不是总是显示投票打开 <script> // Set the date we're counting down to var countDownDate = new Date("<?php echo $countdown['datestart']; ?>").getTime(); var endDate = new date("<?php echo $countdown[
<script>
// Set the date we're counting down to
var countDownDate = new Date("<?php echo $countdown['datestart']; ?>").getTime();
var endDate = new date("<?php echo $countdown['dateend']; ?>").getTime();
// Update the count down every 1 second
var x = setInterval(function() {
// Get todays date and time
var now = new Date().getTime();
// Find the distance between now an the count down date
var distance = countDownDate - now;
// 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 = "Voting now Opens";
}
// If date end is over display some text
//display voting period ends
}, 1000);
</script>
//确定我们倒计时的日期
var countDownDate=新日期(“”.getTime();
var endDate=新日期(“”.getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
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);
要添加结束投票消息,您需要继续间隔,直到投票结束。为了使事情更简单,我们使用if…else if…else将代码分成3个部分。在每个场景中,我们分别处理该场景的显示。它还有一个额外的好处,即在不需要时不进行计算
如果距离>0,则投票尚未开始。
如果endDate>now,投票尚未结束。我假设PHP输出将导致此场景的准确日期。
任何其他情况都意味着投票已经结束
<script>
// Set the date we're counting down to
var countDownDate = new Date("<?php echo $countdown['datestart']; ?>").getTime();
var endDate = new Date("<?php echo $countdown['dateend']; ?>").getTime();
// Update the count down every 1 second
var x = setInterval(function() {
// Get todays date and time
var now = new Date().getTime();
// Find the distance between now an the count down date
var distance = countDownDate - now;
if (distance > 0) {
// 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 ";
}
else if (endDate > now) {
// If the count down is over, write some text
document.getElementById("demo").innerHTML = "Voting now Opens";
}
else {
// If date end is over display some text
//display voting period ends
document.getElementById("demo").innerHTML = "Voting Ended";
clearInterval(x);
}
}, 1000);
</script>
//确定我们倒计时的日期
var countDownDate=新日期(“”.getTime();
var endDate=新日期(“”.getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
如果(距离>0){
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(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
+分钟+米+秒+秒;
}
else if(endDate>now){
//如果倒计时结束,写一些文字
document.getElementById(“demo”).innerHTML=“投票现在打开”;
}
否则{
//如果“日期结束”结束,则显示一些文本
//显示投票期结束
document.getElementById(“demo”).innerHTML=“投票结束”;
净间隔(x);
}
}, 1000);
乍一看,我发现您的“endDate”行有一个错误:
var endDate = new date(.....
它应该是带有大写字母“D”的日期,就像var倒计时日期一样,即
var endDate = new Date(.....
假设代码的其余部分是正确的(并且看起来还可以),应该可以
如果这不能解决问题-从您的问题可以很容易地理解,如果下面的函数总是解析为false,因此永远不会触发清除“x”间隔并显示投票打开的封闭代码
if (distance < 0) {...}
如果您不确定如何使用console.log()
函数,请参考以下链接:不需要显示PHP,只需给出它解析的内容,这里还有一个输入错误。代码无法运行(例如:new date
应为new date
)。到目前为止,您尝试了哪些方法来显示投票结束?投票开始后,可以添加一个setTimeout()
,或者检查当前时间与结束时间之间的关系?如果时间/日期大于关闭时间/日期…如何执行setTimeout()?我是在投票时做的。我想在var endDate大于Now时显示投票结束日期datestart和dateend的值是多少?内置解析器可能无法正确解析它们,另请参见,setInterval不会在指定的时间运行,它会随时间推移而漂移,因此您需要根据实际经过的时间而不是从setInterval调用派生的值来更新剩余时间。
// Find the distance between now an the count down date
var distance = countDownDate - now;