Javascript 同一页面上有多个倒计时

Javascript 同一页面上有多个倒计时,javascript,html,Javascript,Html,我对JS一无所知,所以请放松一下。 我正在使用W3schools网站上的倒计时。 问题是,即使我给这两个倒计时单独的ID,它们似乎在运行相同的倒计时,而不是分开。两者似乎都运行sec cd 如何让这两个倒计时分别工作 HTML <div id="main"> <h1><u><b>Countdown 1</b></u></h1> <h1 id="main-cd"></h1> &l

我对JS一无所知,所以请放松一下。 我正在使用W3schools网站上的倒计时。 问题是,即使我给这两个倒计时单独的ID,它们似乎在运行相同的倒计时,而不是分开。两者似乎都运行sec cd

如何让这两个倒计时分别工作

HTML

<div id="main">
  <h1><u><b>Countdown 1</b></u></h1>
  <h1 id="main-cd"></h1>
  <div class="secondary">
    <h1><u><b>Countdown 2</b></u></h1>
    <h1 id="sec-cd"></h1>
  </div>

</div>

倒计时1
倒计时2
JavaScript

var countDownDate = new Date("August 29, 2017 19:00:00 GMT").getTime();
var x = setInterval(function() {

  var now = new Date().getTime();

  var distance = countDownDate - now;

  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);

  document.getElementById("main-cd").innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s ";

  if (distance < 0) {
    clearInterval(x);
    var ongoing = document.getElementById("main-cd").innerHTML = "Fin";
  }

}, 1000);

var countDownDate = new Date("August 28, 2017 19:00:00 GMT").getTime();

var x = setInterval(function() {

  var now = new Date().getTime();

  var distance = countDownDate - now;

  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);

  document.getElementById("sec-cd").innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s ";

  if (distance < 0) {
    clearInterval(x);
    var ongoing = document.getElementById("sec-cd").innerHTML = "Fin";
  }

}, 1000);
var countDownDate=新日期(“2017年8月29日19:00:00 GMT”).getTime();
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);
document.getElementById(“主cd”).innerHTML=days+“d”+hours+“h”+minutes+“m”+seconds+“s”;
如果(距离<0){
净间隔(x);
var consuming=document.getElementById(“主cd”).innerHTML=“Fin”;
}
}, 1000);
var countDownDate=新日期(“2017年8月28日19:00:00 GMT”).getTime();
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);
document.getElementById(“sec cd”).innerHTML=days+“d”+hours+“h”+minutes+“m”+seconds+“s”;
如果(距离<0){
净间隔(x);
var consuming=document.getElementById(“sec-cd”).innerHTML=“Fin”;
}
}, 1000);

jsiddle-Link:

这是因为您正在重写同一个变量。请使用另一个变量

var countDownDate = new Date("August 29, 2017 19:00:00 GMT").getTime();

var countDownDate_2 = new Date("August 28, 2017 19:00:00 GMT").getTime();// renmaed variable
还可以在使用这些参数的代码中使用这些不同的变量名

下面的代码将起作用。

var countDownDate = new Date("August 29, 2017 19:00:00 GMT").getTime();
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("main-cd").innerHTML = days + "d " + hours + "h "
    + minutes + "m " + seconds + "s ";

    // If the count down is over, write some text 
    if (distance < 0) {
        clearInterval(x);
        var ongoing =document.getElementById("main-cd").innerHTML = "Event Ongoing";
    }

}, 1000);
// Set the date we're counting down to
var countDownDate_2 = new Date("August 28, 2017 19:00:00 GMT").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_2 - 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("sec-cd").innerHTML = days + "d " + hours + "h "
    + minutes + "m " + seconds + "s ";

    // If the count down is over, write some text 
    if (distance < 0) {
        clearInterval(x);
        var ongoing =document.getElementById("sec-cd").innerHTML = "Season has eneded!";
    }

}, 1000);
var countDownDate=新日期(“2017年8月29日19:00:00 GMT”).getTime();
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(“主cd”).innerHTML=days+“d”+hours+“h”
+分钟+米+秒+秒;
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
var consuming=document.getElementById(“主cd”).innerHTML=“事件进行中”;
}
}, 1000);
//确定我们倒计时的日期
var countDownDate_2=新日期(“2017年8月28日19:00:00 GMT”).getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期_2-现在;
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(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(“sec cd”).innerHTML=days+“d”+hours+“h”
+分钟+米+秒+秒;
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
var consuming=document.getElementById(“sec cd”).innerHTML=“季节已结束!”;
}
}, 1000);

您将使用
倒计时日期变量两次。只需重新声明它有
countDownDateTwo
,并将
distance
更改为等于
countDownDateTwo-现在就可以了

注意变量名,这就是作用域是关键的原因