2017-08-12 49 views
2

我對JS一無所知,所以請減少一些鬆懈。 我正在使用W3schools網站的倒計時。 問題是,即使我給兩個倒計時單獨的ID,似乎他們正在運行相同的倒計時,而不是分開。兩者似乎都運行sec-cd。在同一頁面上進行多次倒計時JS

如何讓這兩個倒計時單獨工作?

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> 

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

的jsfiddle鏈接:https://jsfiddle.net/az0upkxu/

回答

2

您使用的是countDownDate變量的兩倍。只需重新聲明它有countDownDateTwo並且還將distance更改爲等於countDownDateTwo - now並且它有效。

小心變量名稱,這就是爲什麼範圍是關鍵。

2

這是因爲你將覆蓋同一個變量。請使用其他變量。

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

請將其標記爲有幫助的答案。 –