Могу ли я использовать setInterval, чтобы регулярно перезаписывать <span>на странице - PullRequest
0 голосов
/ 02 марта 2011

Я не знаю javascript, но пытался разобраться в следующем коде.

Мне дали следующий код для отправки сообщения пользователям, зависящим от времени.

now = new Date();
if (now.getUTCHours() >= 12) {
    document.write('`<span id="NextorNot" style="color:red;">`It is too late to enter`</span>`');
}
else {
    document.write('`<span id="NextorNot" style="color:green;">`You can still enter`</span>`');
}

Это работало нормально, но то, что я хотел, чтобы оно само обновлялось через регулярные промежутки времени, чтобы любой, кто сидел на странице в течение длительного периода времени, видел текущую информацию.После долгих чтений, и я дошел до этого, но я не вижу, где я иду не так.

now = new Date();  
if (now.getUTCHours() >= 12)   {  
    document.write('`<span id="NextorNot" style="color:red;">`It is too late to enter`</span>`');  
}  
else {  
    document.write('`<span id="NextorNot" style="color:green;">`You can still enter`</span>`');  
}  
setInterval(
   function() {  
      if (now.getUTCHours() >= 12) {  
        document.getElementById('NextorNot').style.color = 'red';  
        document.getElementById('NextorNot').innerHTML = 'It is too late to enter');  
      }  
      else {  
        document.getElementById('NextorNot').style.color = 'green';  
        document.getElementById('NextorNot').innerHTML = 'You can still enter');  
      }  
   },  
   5000
);  

Может ли кто-нибудь помочь?

Ответы [ 5 ]

3 голосов
/ 02 марта 2011

Вы забыли изменить / установить now внутри обратного вызова setInterval.

1 голос
/ 02 марта 2011

У вас есть две синтаксические ошибки.

document.getElementById('NextorNot').innerHTML = 'It is too late to enter'); и document.getElementById('NextorNot').innerHTML = 'You can still enter'); имеет дополнительный ) в конце.

Должно быть

document.getElementById('NextorNot').innerHTML = 'It is too late to enter';
document.getElementById('NextorNot').innerHTML = 'You can still enter';
0 голосов
/ 02 марта 2011

У вас есть пара синтаксических ошибок - закрывающая скобка при обновлении содержимого диапазонов.Измените его на:

setInterval(  
function (){  
if (now.getUTCHours() >= 12)  
    {  
        document.getElementById('NextorNot').style.color = 'red';  
    document.getElementById('NextorNot').innerHTML = 'It is too late to enter';  
    }  
    else  
    {  
        document.getElementById('NextorNot').style.color = 'green';  
    document.getElementById('NextorNot').innerHTML = 'You can still enter';  
    }  
},  
5000 );
0 голосов
/ 02 марта 2011

Почти нет.Избавьтесь от закрывающей скобки «)» после текста «Вы все еще можете ввести» в ветвях if и else.Все остальное работает.

0 голосов
/ 02 марта 2011

Попробуйте это: jsFiddle .

now = new Date();
if (now.getUTCHours() >= 12)
{
    document.write('<span id="NextorNot" style="color:red;">It is too late to enter</span>');
}
else
{
    document.write('<span id="NextorNot" style="color:green;">You can still enter</span>');
}

setInterval(
function ()
{
    now = new Date();
    //alert( now );
    if (now.getUTCHours() >= 12)
    {
        document.getElementById('NextorNot').style.color = 'red';
        document.getElementById('NextorNot').innerHTML = 'It is too late to enter';
    }
    else
    {
        document.getElementById('NextorNot').style.color = 'green';
        document.getElementById('NextorNot').innerHTML = 'You can still enter';
    }
},
5000 );​
...