Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2008, 23:16
Новичок на форуме
Отправить личное сообщение для ratt Посмотреть профиль Найти все сообщения от ratt
 
Регистрация: 01.05.2008
Сообщений: 3

Постоянное обновление страницы. Как?
Подскажите пожлуйста как мне поступить?

Мне нужно, чтобы обратный отсчёт времени шёл в реальном времени.
---------------------------------------------------------------------------
Вот скрипт:
<SCRIPT LANGUAGE="javascript">
today = new Date();
BigDay = new Date("May 13, 2008")
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
document.write("<h3><center>");
document.write( "осталось <br><b>"+daysLeft+"</b> дней,<br> <b>"+hrsLeft+"</b> часов<br><b>"+minsLeft+"</b> минут.");
document.write("</h3></center>");
location.reload()
</SCRIPT>
------------------------------------------------------------------
как сделать, чтобы страница постоянно обновлялась?
Ответить с цитированием
  #2 (permalink)  
Старый 02.05.2008, 00:27
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

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

Вместо document.write(...) используйте обновление свойства innerHTML какого-нибудь контейнера. Например:

<span id="container"></span>


var content = "осталось <br><b>"+daysLeft+"</b> дней,<br> <b>"+hrsLeft+"</b> часов<br><b>"+minsLeft+"</b> минут.";
document.getElementById('container').innerHTML = content;
__________________
Тонкости ECMAScript
Ответить с цитированием
  #3 (permalink)  
Старый 02.05.2008, 01:11
Новичок на форуме
Отправить личное сообщение для ratt Посмотреть профиль Найти все сообщения от ratt
 
Регистрация: 01.05.2008
Сообщений: 3

Как понял, должно получиться нечто подобное:

<HTML><HEAD>
<SCRIPT language=javascript>

function clockon() {

today = new Date();
BigDay = new Date("May 13, 2008")
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
var content = "осталось <br><b>"+daysLeft+"</b> дней,<br> <b>"+hrsLeft+"</b> часов<br><b>"+minsLeft+"</b> минут.";
document.getElementById('container').innerHTML = content;
</SCRIPT>
</HEAD>
<BODY onLoad="clockon()">
<SPAN id="container"></SPAN>
</BODY></HTML>
----------------------------
подскажите почему это не рабтает.
Ответить с цитированием
  #4 (permalink)  
Старый 02.05.2008, 02:38
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

ratt, не первый взгляд - синтаксическая ошибка - функция не закрыта (закрывающей скобки нет "}"). Плюс ко всему, если Вам нужно в реальном времени показывать время (масло маслянное =)), то посмотрите функции:

- setTimeout(функция, мс) - выполняет функцию (первый параметр) по истечении времени (второй параметр, миллисекунды). Выполняет единожды (кроме случае, если функция рекурсивная)

- setInterval(...) - параметры те же, только выполняет функцию периодически

P.S.: на будущее - старайтесь четче задавать вопросы (где именно не работает; работает не правильно или вообще не работает и выдает ошибки и т.д.). Используйте кнопки JS или HTML для подстветки кода.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #5 (permalink)  
Старый 02.05.2008, 10:07
Новичок на форуме
Отправить личное сообщение для ratt Посмотреть профиль Найти все сообщения от ratt
 
Регистрация: 01.05.2008
Сообщений: 3

Спасибо: всё получилось!
<HTML><HEAD>
[JS]<SCRIPT language=javascript>

function clockon() {

today = new Date();
BigDay = new Date("May 13, 2008")

msPerDay = 24 * 60 * 60 * 1000 ;

timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);

e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);

e_minsLeft = (e_hrsLeft-hrsLeft)*60;
minsLeft = Math.floor(e_minsLeft);

e_secLeft = (e_minsLeft-minsLeft)*60;
secLeft = Math.floor(e_secLeft);

var content = "осталось <br><b>"+daysLeft+"</b> дней,<br> <b>"+hrsLeft+"</b> часов<br><b>"+minsLeft+"</b> минут,<br><b>"+secLeft+"</b> секунд";
document.getElementById('container').innerHTML = content;
setTimeout("clockon()", 1000);
}
</SCRIPT>[/JS]</HEAD>
<BODY onLoad="clockon()">
<SPAN id="container"></SPAN>
</BODY></HTML>
Ответить с цитированием
  #6 (permalink)  
Старый 12.10.2010, 09:03
Новичок на форуме
Отправить личное сообщение для S.Viktor Посмотреть профиль Найти все сообщения от S.Viktor
 
Регистрация: 12.10.2010
Сообщений: 2

Подскажите новичку, как нужно изменить вышеуказанный JS-скрипт, чтобы оставшееся количество дней до указанной даты вычислялось не на локальном компьютере пользователя, а через cgi-запрос на сервере?
Ответить с цитированием
  #7 (permalink)  
Старый 12.10.2010, 11:15
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

Сообщение от S.Viktor Посмотреть сообщение
Подскажите новичку, как нужно изменить вышеуказанный JS-скрипт, чтобы оставшееся количество дней до указанной даты вычислялось не на локальном компьютере пользователя, а через cgi-запрос на сервере?
нужно добавить AJAX запрос на сервер для получения времени
Ответить с цитированием
  #8 (permalink)  
Старый 12.10.2010, 11:41
Интересующийся
Отправить личное сообщение для SilentImp Посмотреть профиль Найти все сообщения от SilentImp
 
Регистрация: 12.10.2010
Сообщений: 21

С какого перепугу число дней надо вычислять на сервере?
Оно будет как то отличатся от того которое вы получите на стороне клиента не забрасывая сервер не нужными http запросами?
Ответить с цитированием
  #9 (permalink)  
Старый 12.10.2010, 15:23
Новичок на форуме
Отправить личное сообщение для S.Viktor Посмотреть профиль Найти все сообщения от S.Viktor
 
Регистрация: 12.10.2010
Сообщений: 2

Сообщение от SilentImp Посмотреть сообщение
С какого перепугу число дней надо вычислять на сервере?
Оно будет как то отличатся от того которое вы получите на стороне клиента не забрасывая сервер не нужными http запросами?
Не обязательно вычисление количества дней - это может быть любая меняющаяся на сервере информация, например, количество новых заявок в базе данных.
Ответить с цитированием
  #10 (permalink)  
Старый 13.10.2010, 02:55
Интересующийся
Отправить личное сообщение для SilentImp Посмотреть профиль Найти все сообщения от SilentImp
 
Регистрация: 12.10.2010
Сообщений: 21

Тогда все верно ответили: ajax (http://www.w3.org/TR/2010/CR-XMLHttpRequest-20100803/) или websocket (http://www.w3.org/TR/2009/WD-websockets-20091222/) в зависимости от характера данных и частоты их изменения.

p.s. спек не пугайтесь. все что надо для кроссбраузерного использования реализовано в популярных фремворках или в виде отдельных библиотек.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы? DeUre Общие вопросы Javascript 14 17.12.2013 15:37
форма как в ExtJS 2 magistr_bender Общие вопросы Javascript 0 11.09.2008 16:01
Как переместиться в начало страницы или к закладке? f_gor Общие вопросы Javascript 2 03.09.2008 23:00
Как сохранить кеш в JavaScript Jumong Общие вопросы Javascript 4 20.07.2008 20:29
Цикличное обновление страницы Roman_kstu Общие вопросы Javascript 7 29.05.2008 05:55