2013-12-05 2 views
1

Принесите мои дерьмовые навыки JS, но я пытаюсь получить страницу для обновления с помощью moment.js, чтобы она постоянно показывала количество секунд.Использование Moment.js и получение страницы для обновления, чтобы показать секунды

У меня есть это:

function update_time(){ 

var now = moment().format('h:mm:ss a'); 

$('.timer').append(now); 

setTimeout(update_time, 1000); 

})(); 

Но я не знаю, как заставить его работать правильно. Я почти уверен, что не закрываю что-то правильно, даже если у меня есть правильное форматирование функции.

+0

Не уверен, что это связано с ошибкой в ​​copy-paste - но не должно быть функции '(' перед функцией? Также вы можете предоставить более подробную информацию о том, как она работает некорректно? – linstantnoodles

ответ

2

Там, кажется, две проблемы здесь.

Во-первых, ваша функция самозапуска должна быть окружена круглыми скобками; вам кажется, что отсутствует первая открывающая скобка, указав @linstantnoodles.

Во-вторых, добавление времени будет продолжать добавлять текст времени к данному узлу каждую секунду. Вы, вероятно, захотите заменить содержанием .timer, поэтому вместо этого вы должны использовать jQuery.text().

Here's a fiddle.

(function update_time(){ 
    var now = moment().format('h:mm:ss a'); 
    $('.timer').text(now); 
    setTimeout(update_time, 1000); 
})(); 
+1

Я думаю, вы имеете в виду ['. text() '] (http://api.jquery.com/text/) .Это может не иметь значения в этом случае, но' .html() 'следует использовать только с кодировкой HTML. – user113215

+0

Спасибо Томас! Да, я собираю некоторые элементы из других ресурсов, и я не очень хорошо работал с пользовательскими функциями JS. Я не был уверен, как настроить его с нуля. Но это действительно помогает мне лучше понять его и он работает. Спасибо! – ultraloveninja

+0

Хороший вызов, @ user113215. Либо работает, но '.text' здесь более уместен. –

0

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

function update_time(){   
    var now = moment().format('h:mm:ss a');  
    //displaying the timer  
    $('.timer').html(now);  
    //Keeping update in seconds  
    setTimeout(update_time, 1000);  
}; 

//Initiate first 
setTimeout(update_time, 1000); 
0

Вы не должны полагаться на метод SetTimeout() при выполнении синхронизации работы (see question). Вместо этого используйте объект даты, например, в the sample at W3schools или см. Сценарий, например http://flipclockjs.com/, для точных таймеров.

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