2016-12-03 22 views
-1

私は非常にjsで始まっています。なぜカウントダウンしないのかわかりません。任意のヒント? (私はsetIntervalを使用しても動作しません)。setTimeoutが機能しない

EVENTDATEは、それが動作

var eventDate =new date (2016,12,25); 

ような任意の通常の日付の一種です。 コンソールに間違いはありません。

 
 
     function countdown() { 
 
      var now = Date.parse(new Date); 
 
      var eventDate = new Date(now + 1800000); 
 
    
 
      var remTime = eventDate - now; 
 
    
 
      var s = Math.floor(remTime/1000); 
 
      var m = Math.floor(s/60); 
 
    
 
      m %= 60; 
 
      s %= 60; 
 
    
 
      m = (m < 10) ? "0" + m : m; 
 
      s = (s < 10) ? "0" + s : s; 
 
    
 
      document.getElementById("minutes").textContent = m; 
 
      document.getElementById("seconds").textContent = s; 
 
    
 
      setTimeout("countdown()", 1000); 
 
     } 
 
    
 
     countdown();
body { 
 
       background: #f6f6f6; 
 
      } 
 
    
 
      .countdownContainer { 
 
       position: absolute; 
 
       top: 50%; 
 
       left: 50%; 
 
       transform: translateX(-50%) translateY(-50%); 
 
       text-align: center; 
 
       background: #ddd; 
 
       border: 1px solid #ddd; 
 
       padding: 10px; 
 
       box-shadow: 0 0 5px 3px #ccc; 
 
      } 
 
    
 
      .info { 
 
       font-size: 80px; 
 
      }
<!DOCTYPE html> 
 
    <html> 
 
    <head> 
 
     <title>Christmas Countdown</title> 
 
     
 
    </head> 
 
    <body> 
 
    <table class="countdownContainer"> 
 
     <tr class="info"> 
 
      <td colspan="4">Christmas Countdown</td> 
 
     </tr> 
 
     <tr class="info"> 
 
      <td id="minutes">12</td> 
 
      <td id="seconds">22</td> 
 
     </tr> 
 
     <tr> 
 
      <td>Minutes</td> 
 
      <td>Seconds</td> 
 
     </tr> 
 
    </table> 
 
    </body> 
 
    </html>

+1

'のsetTimeout(カウントダウン、1000)試してみてください。あなたがより多くを読みたい場合は'このhttp://www.w3schools.com/jsref/met_win_setinterval.asp – NewToJS

+2

を見てみましょうそれはより清潔ですが、何の違いもありません。 – JJJ

+0

それもそうしません。リンクをありがとうが、私はそれを前に読んだ。 – Karolina

答えて

0

は物事のカップルここで間違って1コードと第2の機能の論理にあります。

あなたがsetTimeoutメソッドで関数を渡す必要がまず第一に、したがって、それはあなたが

var now = Date.parse(new Date);

var eventDate = new Date(now + 1800000);

、その後の服従を計算を計算しているロジックで第二setTimeout(countdown, 100);

する必要がありますどちらも各ループで同じ値になります。

var eventDate = new Date(Date.parse(new Date) + 1800000); 
 

 
function countdown() { 
 
    var now = Date.parse(new Date); 
 

 

 
    var remTime = eventDate - now; 
 

 
    var s = Math.floor(remTime/1000); 
 
    var m = Math.floor(s/60); 
 

 
    m %= 60; 
 
    s %= 60; 
 

 
    m = (m < 10) ? "0" + m : m; 
 
    s = (s < 10) ? "0" + s : s; 
 

 
    document.getElementById("minutes").innerHTML = m; 
 
    document.getElementById("seconds").innerHTML = s; 
 

 
    setTimeout(countdown, 1000); 
 
} 
 

 
countdown();
body { 
 
    background: #f6f6f6; 
 
} 
 
.countdownContainer { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translateX(-50%) translateY(-50%); 
 
    text-align: center; 
 
    background: #ddd; 
 
    border: 1px solid #ddd; 
 
    padding: 10px; 
 
    box-shadow: 0 0 5px 3px #ccc; 
 
} 
 
.info { 
 
    font-size: 80px; 
 
}
<table class="countdownContainer"> 
 
    <tr class="info"> 
 
    <td colspan="4">Christmas Countdown</td> 
 
    </tr> 
 
    <tr class="info"> 
 
    <td id="minutes">12</td> 
 
    <td id="seconds">22</td> 
 
    </tr> 
 
    <tr> 
 
    <td>Minutes</td> 
 
    <td>Seconds</td> 
 
    </tr> 
 
</table>

+0

時間が1秒ごとに変更されるように設定されている場合、タイムアウトを100msに設定するのはなぜですか?この機能は、変更される前に10倍の速度で実行されます。 – NewToJS

+3

@ A.JいいえA.Jあなたは最初の回答を掲載するために急いでいます。次に、詳細を追加した後に回答を編集します。私はこれを何度も見てきました。 – NewToJS

+0

それはまた動作しません – Karolina

関連する問題