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;