Здравствуйте. Нужно сделать простенькие JS-часики. Честно говоря, знаю что это не сложно. Но что-то у меня не сложилось с определением времени. Нужно что бы в <div id='myTimer'> было текущее время. И время это бралось из значения времени сервера, а не компьютера пользователя. Как это можно простенько реализовать? Знаю что нужно написать ф-ию с использованием setTimeout(), которая бы каждую секунду выводила эту самую дату. Далее при помощи innerHTML записываем ее в контейнер. Спасибо.
когда писал - работало ) [js] var dateobj = new Date (); var servertime = <?php echo mktime()*1000; ?>; var clienttime = dateobj.getTime(); var raznica = servertime - clienttime; function timer(raznica) { dateobj = new Date (); correct = dateobj.getTime() + raznica; dateobj.setTime(correct); hour = dateobj.getHours(); minute = dateobj.getMinutes(); sec = dateobj.getSeconds(); document.getElementById("dosya").innerHTML = hour+":"+minute+":"+sec; setTimeout("timer("+raznica+")", 1000); } timer(raznica);[/js]
Kreker Все отлично, спасибо. Правда в форматах js-часов я не очень. Как сделать, что бы к hour min sec прибавлялся 0, если значение меньше 9. Пока сделал так if (hour <= 9) hour = '0' + hour; ...
Кстати, нашел такую финтифлюшку: Т.е не обязательно возиться с разницей, достаточно просто впихнуть серверное время при задании объекта) Насчет нулей - скорей всего так. Описание объекта date и его методов здесь - http://www.r22.ru/docs/1-prg/JavaScript/date.html
Client-side часики я делаю так (c) vladson.com HTML: <p id="clock"> </p><script type="text/javascript">function this_time(asd){document.getElementById("clock").innerHTML = new Date();}self.setInterval("this_time()",100);</script> Как прикрутить их на работу с временем сервера смотри в примере Kreker-а
Логичнее не забивать себе голову такими вопросами, работает и фиг с ним (это не то место где надо придираться, тут допуск +/- трамвайная остановка в полне допустим)
фигасе, 10 тактов в секунду в сравнении с 1м тактом в секунду - сравнимо. Один такт в секунду для секундомера на порядок логичней, чем 10 )
Блин. Парился с часами, отдельно получая часы, минуты, секунды. Делал двухзначными. А оказалось все проще - date.toLocaleTimeString() Таким образом, скрипт становится таким: [js]var dateobj = new Date (); var servertime = <?php echo mktime()*1000; ?>; var clienttime = dateobj.getTime(); var raznica = servertime - clienttime; function timer(raznica) { dateobj = new Date (); correct = dateobj.getTime() + raznica; dateobj.setTime(correct); document.getElementById("dosya").innerHTML = dateobj.toLocaleTimeString(); setTimeout("timer("+raznica+")", 1000); } timer(raznica);[/js]
Не помню точно где (в одном из древних браузеров) мой скрипт выдаёт не 10 тактов а 50 Посмотри setInterval, имхо лучше в данном случае (а то у тебя рекурсия получается, а это не есть гуд)