Время и дата, обновление в онлайне
Всем привет!
Помогите сделать так, чтобы шло обновление времени каждую секунду, например. <SCRIPT LANGUAGE="JavaScript"> var now = new Date(); var hours = now.getHours(); var minutes = now.getMinutes(); var seconds = now.getSeconds(); var timeValue = "" + ((hours >24) ? hours -24 :hours) timeValue += ((minutes < 10) ? ":0" : ":") + minutes timeValue += ((seconds < 10) ? ":0" : ":") + seconds timerRunning = true; mydate = new Date(); myday = mydate.getDay(); mymonth = mydate.getMonth(); myweekday= mydate.getDate(); weekday= myweekday; myyear= mydate.getYear(); year = myyear if (year < 2000) year = year + 1900; if(myday == 0) day = " Воскресенье, " else if(myday == 1) day = " Понедельник, " else if(myday == 2) day = " Вторник, " else if(myday == 3) day = " Среда, " else if(myday == 4) day = " Четверг, " else if(myday == 5) day = " Пятница, " else if(myday == 6) day = " Суббота, " if(mymonth == 0) month = "Января " else if(mymonth ==1) month = "Февраля " else if(mymonth ==2) month = "Марта " else if(mymonth ==3) month = "Апреля " else if(mymonth ==4) month = "Мая " else if(mymonth ==5) month = "Июня " else if(mymonth ==6) month = "Июля " else if(mymonth ==7) month = "Августа " else if(mymonth ==8) month = "Сентября " else if(mymonth ==9) month = "октября " else if(mymonth ==10) month = "Ноября " else if(mymonth ==11) month = "Декабря" document.write("<P ALIGN=RIGHT><FONT SIZE=1 FACE=ARIAL>" + timeValue + " | " +day + month); document.write(myweekday+","+ " " + year + "</FONT></p>"); </SCRIPT> Я пытался текст в теле поместить в функцию а ля function show(){ ... setTimeout("show()",1000) } window.onload=show но не помогло. |
в функции вместо document.write(); используйте document.getElementById().innerHtml = ""; , ну и вешайте на таймер как Вы и сказали.
Получится что то типа: document.getElementById("time").innerHTML='<span id="time">'+timeValue+' | '+day+myweekday+' '+month+', '+year+'</span>'; Ну и в документ соответственно добавьте <span id="time"></span> P.S. Вместо множественного ветвления в Вашем случае было бы красивее использовать switch ;) |
Пока писал, Zibba уже ответил)))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript"> var datetime = { month: ['Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря'], day: ['Воскрсенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'], show: function(node) { var _this = this; setInterval(function() { var date = new Date(); node.innerHTML = [_this.day[date.getDay()], ', ', date.getDate(), ' ', _this.month[date.getMonth()], ' ', date.getFullYear()].join(''); }, 1000); } }; window.onload = function() { datetime.show(document.getElementById('date')); }; </script> </head> <body> <div id="date"></div> </body> </html> Вывод времени не стал делать, думаю сами догадаетесь как сделать. Метод «getFullYear» не работает вроде бы только в старых версиях «Mozilla», которые уже не актуальны, поправьте если ошибаюсь. |
При создании часов нельзя ставить таймаут в одну секунду, т.к. реально он будет больше. В результате секунды будут идти неровно.
|
Спасибо, не знал. А какое тогда оптимаьлное время для одной секунды? Или будет зависеть от кода скрипта?
|
Цитата:
|
1 миллисекунда - это слишком часто... Я ставил 100 - нормально. То есть время таймера - это максимальная погрешность на которую может отклонится отрисовка... Если ты человек-часы и сможешь отличить 0,9 секунды от 1,1 секунды, то ставь погрешность меньше...
Везде принимается за визуальный лаг 300мс, так что +-100 (=200) меньше общепринятого. |
Часовой пояс GMT +3, время: 14:40. |