2013-07-09 2 views
0

В этом javascript «секунды влево» должны уменьшаться каждую секунду, но этого не происходит.
innerhtml не изменяют значение для <span id='timer'>, пока innerHTML для <span id='id'> работает.innerHTML не меняется на setInterval

<script> 
var lastdate=1373814606250; 
var today=1373388292527; 
var d,h,m,s; 
function displayDate() 
{ 
    today--; 
    d=(lastdate-today)/86400000; 
    h=(d-Math.floor(d))*24; 
    m=(h-Math.floor(h))*60; 
    s=(m-Math.floor(m))*60; 
    document.getElementById("timer").innerHTML=Math.floor(d)+" Days "+Math.floor(h)+" hours "+Math.floor(m)+" minutes "+Math.floor(s)+" seconds"; 
    document.getElementById('id').innerHTML=today; 
} 
</script> 
<body onload="setInterval('displayDate()',1000)"> 
<span id='timer'></span><br/> 
<span id='id'></span> 
</body> 

Посмотреть Working here

EDIT
Вот сегодня и lastdate является дата в миллисекундах.

+0

alert() значение таймера, см., Что он говорит. –

ответ

1

innerHTML первого пролета работает слишком , но содержание не меняется. Math.floor(d)+" Days "+Math.floor(h)+" hours "+Math.floor(m)+" minutes "+Math.floor(s)+" seconds" дает каждый раз тот же результат.

2

Я понял Была логическая ошибка в вычислении секунд.
Это должно быть

today=today+1000; 

Из-за миллисекунды не секунды

+0

+1000 или -1000? В примере вы хотели, чтобы он отсчитывал –

+0

@Pete, это таймер обратного отсчета, поэтому сегодняшнее время будет увеличиваться, последняя дата будет постоянной. поэтому (lastdate-today) будет уменьшаться каждую секунду, если сегодня = сегодня + 1000 выполняется каждую секунду. –

+0

Да, я знаю, но в коде, который у вас был сегодня; вот почему я спросил. В любом случае, хорошо, что ты справился с этим. –

Смежные вопросы