2017-08-12 36 views
2

私はJSについて何も知っていません。 私はW3schoolsのウェブサイトからカウントダウンを使用しています。 問題は、2つのカウントダウンに別々のIDを与えても、別々のものではなく同じカウントダウンを実行しているようです。どちらもsec-cdを実行するようです。同じページの複数のカウントダウンJS

これらの2つのカウントダウンを個別に動作させるにはどうすればよいですか?

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をに変更すると動作します。

変数名に注意してください。これがscopeである理由です。

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

助けあれば答えとして記入してください。 –